[英]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.
這是我為第一個請求指定的標頭:
{
["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標頭之一的值格式不正確。>> Content-Length”
這可能是由於Azure中的存儲配置錯誤引起的嗎?
您很可能沒有將范圍上傳到實際上6000000字節長的文件中。 “放置范圍”操作不會為您隱式擴展文件的大小。 您需要顯式調用SetFileProperties
來首先調整文件大小。
$storage->createFileFromContent(...)
會將文件大小設置為與內容相同的大小,因此很有可能不是6000000字節。
另外,如果范圍和內容長度不匹配,例如,在范圍指定為3000001字節而內容長度為3000000字節的情況下,服務器將返回400。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.