簡體   English   中英

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.

這是我為第一個請求指定的標頭:

{
  ["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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM