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