complete-multipart-upload用于完成整個文件的分片上傳。
注意事項
阿里云賬號默認擁有設置Object的權限。如果您需要通過RAM用戶或者STS的方式進行設置,您必須擁有
oss:PutObject
權限。具體操作,請參見為RAM用戶授權自定義的權限策略。調用 complete-multipart-upload 操作時,用戶需提供所有有效的分片列表(含 PartNumber 和 ETag),PartNumber 范圍為 1~10000,按升序排列且可不連續;OSS 會驗證每個分片的有效性,確保除最后一個分片外的每個分片大小不小于 100 KB,驗證通過后將這些分片組合成一個完整的對象。
由于OSS處理CompleteMultipartUpload請求時會持續一定的時間。在這段時間內,如果客戶端與OSS之間連接中斷,OSS仍會繼續該請求。
同一個Object可以同時擁有不同的UploadId,當Complete一個UploadId后,此UploadId將失效,但該Object的其他UploadId不受影響。
命令格式
ossutil api complete-multipart-upload --bucket value --key value --upload-id value --complete-multipart-upload value [flags]
參數 | 類型 | 說明 |
--bucket | string | 要修改的目標Bucket。 |
--complete-all | string | 指定是否列舉當前UploadId已上傳的所有Part。 |
--complete-multipart-upload | string | 保存CompleteMultipartUpload請求內容的容器。 |
--encoding-type | string | 指定對返回的內容進行編碼,指定編碼的類型。 |
--forbid-overwrite | string | 指定CompleteMultipartUpload操作時是否覆蓋同名Object。 |
--key | string | Object的完整路徑。 |
--upload-id | string | MultipartUpload事件的ID。 |
complete-multipart-upload命令對應API接口CompleteMultipartUpload。關于API中的具體參數含義,請參見CompleteMultipartUpload。
--complete-multipart-upload
--complete-multipart-upload配置選項既支持XML語法也支持JSON語法,當選項值包含file://前綴時,表示從文件中讀取配置。
XML語法:
<CompleteMultipartUpload> <Part> <PartNumber>integer</PartNumber> <ETag>string</ETag> </Part> ... </CompleteMultipartUpload>
JSON語法:
{ "Part": [ { "PartNumber": integer, "ETag": "string" }, ... ] }
關于支持的全局命令行選項,請參見支持的全局命令行選項。
使用示例
以下示例展示了如何為存儲空間examplebucket
中上傳ID為123的exampleobject完成分片上傳。
使用XML配置文件,complete-multipart-upload.xml內容如下:
<?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUpload> <Part> <PartNumber>1</PartNumber> <ETag>"C884BAB4F7A89D38A194568C7DE****"</ETag> </Part> <Part> <PartNumber>2</PartNumber> <ETag>"C884BAB4F7A89D38A194568C7DEA****"</ETag> </Part> </CompleteMultipartUpload>
命令示例如下:
ossutil api complete-multipart-upload --bucket examplebucket --key exampleobject --upload-id 123 --complete-multipart-upload file://complete-multipart-upload.xml
使用JSON配置文件,complete-multipart-upload.json 內容如下:
{ "Part": [ { "PartNumber": "1", "ETag": "\"C884BAB4F7A89D38A194568C7DE****\"" }, { "PartNumber": "2", "ETag": "\"C884BAB4F7A89D38A194568C7DEA****\"" } ] }
命令示例如下:
ossutil api complete-multipart-upload --bucket examplebucket --key exampleobject --upload-id 123 --complete-multipart-upload file://complete-multipart-upload.json
使用JSON配置參數,命令示例如下:
ossutil api complete-multipart-upload --bucket examplebucket --key exampleobject --upload-id 123 --complete-multipart-upload file://complete-multipart-upload.json
以下示例展示了如何列舉存儲空間examplebucket
的當前UploadId為123已上傳的所有Part。
ossutil api complete-multipart-upload --bucket examplebucket --key exampleobject --upload-id 123 --complete-all yes