簡體   English   中英

無法通過curl和php完成文件上傳

[英]Cannot complete file uploads with via curl and php

我一直試圖將文件的一部分上傳到IBM存儲雲,並且一切似乎都還好。

IBM文檔鏈接:

涉及3個步驟

步驟1:啟動分段上傳

我已經通過啟動分段上傳文檔獲得了我的uploadId

第2步:上傳部分

我上傳的文件約為3504字節 (canada1.jpg),並通過“上載部分文檔”分為4個部分上載。

這是API響應請求的上傳部分的成功結果(標題為HTTP / 1.1 200 OK)

該文件實際上在我的IBM存儲桶中可用,因為每當我查詢列表部件時,我都可以按照以下方式獲取文件的所有詳細信息

PartNumber: 1 
ETag: "785c3d92f3222ce11c1920c656529601" 
Size: 1024 
PartNumber: 2 
ETag: "785c3d92f3222ce11c1920c656529601" 
Size: 1024 
PartNumber: 3 
ETag: "785c3d92f3222ce11c1920c656529601" 
Size: 1024 
PartNumber: 4 
ETag: "65cb76bccd0d52ca8f2ad374694012a3" 
Size: 432 

步驟3:完成分段上傳

現在,我嘗試按照相同的文檔來完成分段上傳。

這是關於完成分段上傳的內容 ,這是一個問題

向具有查詢參數uploadId和主體中適當的XML塊的對象發出的POST請求將完成分段上傳

curl -X "POST" "https://(endpoint)/(bucket-name)/(object-key)?uploadId=(upload-id)"
 -H "Authorization: bearer (token)"
 -H "Content-Type: text/plain; charset=utf-8"
 -d "<CompleteMultipartUpload>
         <Part>
           <PartNumber>1</PartNumber>
           <ETag>(etag)</ETag>
         </Part>
         <Part>
           <PartNumber>2</PartNumber>
           <ETag>(etag)</ETag>
         </Part>
       </CompleteMultipartUpload>"

這是我的問題:

當我嘗試按照以下代碼完成文件上傳時。 這些代碼會一直加載到瀏覽器中,直到超時為止。 我已將超時時間分別增加到3000次,但還是相同的問題。 似乎該帖子未正確發送。 有人可以幫我嗎

$url = "https://s3.us.cloud-object-storage.appdomain.cloud/mybucketname/canada1.jpg?uploadId=my-upload-id-here";

$file ='canada1.jpg';
echo $filesize = filesize($file);

$xml = '
<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"785c3d92f3222ce11c1920c656529601"</ETag>
</Part>
<Part><PartNumber>2</PartNumber>
<ETag>"785c3d92f3222ce11c1920c656529601"</ETag>
</Part>
<Part>
<PartNumber>3</PartNumber>
<ETag>"785c3d92f3222ce11c1920c656529601"</ETag>
</Part>
<Part>
<PartNumber>4</PartNumber>
<ETag>"65cb76bccd0d52ca8f2ad374694012a3"</ETag>
</Part>
</CompleteMultipartUpload>';


$headers = array(

"Authorization: Bearer my-access-token", 
"Host: s3.us.cloud-object-storage.appdomain.cloud",
    "Content-type: image/jpg",
    "Content-length: $filesize" ,
//"Content-length: " . strlen($xml)
);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3000);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$data = curl_exec($ch); 
echo $data;
if(curl_errno($ch)){
    print curl_error($ch);
}
else{
    curl_close($ch);
}

這真的很有趣。 缺少發帖請求

curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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