Azure 文件存储 putRange 操作失败,返回 416:InvalidHeaderValue (Content-Length)
Azure file storage putRange operation fails with 416: InvalidHeaderValue (Content-Length)
我正在使用 Azure SDK 在 Azure 文件存储上执行基本操作。为了支持大文件上传我支持分块上传,所以我调用:
$storage->createFileFromContent(...)
在第一个块和
$storage->putFileRange(...)
以下所有内容。
第一个请求工作正常,文件在指定的第一个范围内填充。然而,第二个和后续请求失败并出现错误:
Code: 416
Value: The range specified is invalid for the current size of the resource.
这是我为第一个请求指定的 headers:
{
["x-ms-range"]=>"bytes=0-2999999"
["content-length"]=>3000000
["x-ms-write"]=>"Update"
}
流的实际大小:3000000
对于第二个请求:
{
["x-ms-range"]=>"bytes=3000000-5999999"
["content-length"]=>3000000
["x-ms-write"]=>"Update"
}
流的实际大小:3000000
谁能告诉我哪里出了问题??我还尝试将范围调整为 300000-6000000 之类的值,但随后出现此错误:
”代码:400
值:HTTP headers 之一的值格式不正确。 >> Content-Length"
会不会是Azure存储配置错误导致的?
很可能您没有将范围上传到实际长度为 6000000 字节的文件。 Put Range 操作不会隐式地为您扩展文件的大小。您需要先显式调用 SetFileProperties
来调整文件大小。
$storage->createFileFromContent(...)
会将文件大小设置为与内容大小相同,所以很可能不是6000000字节。
此外,如果范围和内容长度不匹配,例如在您的情况下,范围指定 3000001 字节,而内容长度为 3000000 字节,服务器将返回提到的 400。
我正在使用 Azure SDK 在 Azure 文件存储上执行基本操作。为了支持大文件上传我支持分块上传,所以我调用:
$storage->createFileFromContent(...)
在第一个块和
$storage->putFileRange(...)
以下所有内容。
第一个请求工作正常,文件在指定的第一个范围内填充。然而,第二个和后续请求失败并出现错误:
Code: 416
Value: The range specified is invalid for the current size of the resource.
这是我为第一个请求指定的 headers:
{
["x-ms-range"]=>"bytes=0-2999999"
["content-length"]=>3000000
["x-ms-write"]=>"Update"
}
流的实际大小:3000000
对于第二个请求:
{
["x-ms-range"]=>"bytes=3000000-5999999"
["content-length"]=>3000000
["x-ms-write"]=>"Update"
}
流的实际大小:3000000
谁能告诉我哪里出了问题??我还尝试将范围调整为 300000-6000000 之类的值,但随后出现此错误:
”代码:400 值:HTTP headers 之一的值格式不正确。 >> Content-Length"
会不会是Azure存储配置错误导致的?
很可能您没有将范围上传到实际长度为 6000000 字节的文件。 Put Range 操作不会隐式地为您扩展文件的大小。您需要先显式调用 SetFileProperties
来调整文件大小。
$storage->createFileFromContent(...)
会将文件大小设置为与内容大小相同,所以很可能不是6000000字节。
此外,如果范围和内容长度不匹配,例如在您的情况下,范围指定 3000001 字节,而内容长度为 3000000 字节,服务器将返回提到的 400。