文档中心 Object Storage API CompleteMultipartUpload

CompleteMultipartUpload

更新时间:2025-08-18 15:54:03

接口说明

  1. 如果用户已上传所有分片,可以调用合并分片接口,系统会将用户指定的分片在服务端合并为完整对象。在执行“合并分片”操作前,用户无法下载已上传的数据。

  2. 合并分片时,需要将多段上传任务初始化时记录的额外消息头信息拷贝到对象元数据中,处理流程与普通上传对象携带这些消息头的流程相同。

  3. 已上传的分片,只要对应的多段上传任务未取消,都会占用用户的容量配额;当对应的多段上传任务“合并分片”操作完成后,仅分片列表中指定合并的多段数据会继续占用容量配额,若用户已上传的分片不在本次“合并分片”建立的分片列表中,则多余的分片数据会在合并完成后被删除,对应容量配额也会被释放。

  4. 合并后的多段上传数据可通过现有的下载对象接口下载整个多段上传对象。

  5. 合并后的多段上传数据可通过现有的删除对象接口删除整个多段上传对象的所有分片数据,且删除后无法恢复。

  6. 合并后的多段上传对象不会以整个对象的MD5作为Etag。对象在下载多段数据或List空间时可见的多段数据Etag生成方式为:ETag =MD5(M1M2……MN)-N
    其中Mn为第n分片的MD5值,N表示分片总数。

请求语法

POST /ObjectName?uploadId=uploadID HTTP/1.1
Host: Bucket.Endpoint
Date: date
Content-Length: length
Authorization: authorization

<CompleteMultipartUpload>
  <Part>
    <PartNumber>partNum1</PartNumber>
    <ETag>etag1</ETag>
  </Part>

  <Part>
    <PartNumber>partNum2</PartNumber>
    <ETag>etag2</ETag>
  </Part>

  <Part>
    <PartNumber>partNum3</PartNumber>
    <ETag>etag3</ETag>
  </Part>
</CompleteMultipartUpload>

URI请求参数

参数名 描述 是否必填
uploadId Initiate Multipart Upload返回的upload id

请求头

仅使用公共请求头

请求体

请求体为xml格式的分片信息

元素名称 描述 是否必填
CompleteMultipartUpload 合并分片的列表。
类型:XML 。
父节点:null
子节点:一个或多个Part元素
Part 上传分片元素的列表。
类型:XML
父节点:CompleteMultipart
子节点:PartNumber, ETag
PartNumber 分片编号。
类型:整数。
父节点:Part
ETag 对应分片的ETag值。
类型:字符串。
父节点:Part

响应语法

HTTP/1.1 status_code
x-wos-request-id: request id
Content-Type: application/xml
Content-Length: length
Date: date
Connection: state
Server:WS-web-server

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CompleteMultipartUploadResult xmlns="https://www.wangsu.com/document">
  <Location>http://example-Bucket.Endpoint/example-Object</Location>
  <Bucket>BucketName</Bucket>
  <Key>ObjectName</Key>
  <ETag>ETag</ETag>
</CompleteMultipartUploadResult>

响应头

仅使用公共响应头

响应元素

元素 描述
CompleteMultipartUpload 响应容器
类型:XML
子节点:Location, Bucket, Key, ETag
父节点:空
Location 合并后对象的url
类型:字符串
父节点:CompleteMultipartUpload
Bucket 合并后分片所在空间
类型:字符串
父节点:CompleteMultipartUpload
Key 合并后对象的key
类型:字符串
父节点:CompleteMultipartUpload
ETag 按各分片ETag计算的结果
类型:字符串
父节点:CompleteMultipartUpload

特殊错误

情况 Http状态 错误码 信息
消息体Xml数据中给定的etag值不正确 400 Bad Request InvalidPart One or more of the specified parts could not be found. The part may not have been uploaded, or the specified entity tag may not match the part’s entity tag.
没有xml数据 400 Bad Request InvalidRequest You must specify at least one part
Xml数据格式不正确,如缺少partNumber标签等 400 Bad Request MalformedXML The XML you provided was not well-formed or did not validate against our published schema

示例

POST /example-object?uploadId=AAAsb2FkIElEIGZvciBlbHZpbmcncyWeeS1tb3ZpZS5tMnRzIRRwbG9hZA HTTP/1.1
Host: bucket.s3-cn-east-1.wcsapi.com
Date: Mon, 1 Nov 2020 20:34:56 GMT
Content-Length: 391

Authorization: WOS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
<CompleteMultipartUpload>
  <Part>
    <PartNumber>1</PartNumber>
    <ETag>"a54357aff0632cce46d942af68356b38"</ETag>
  </Part>
  <Part>
    <PartNumber>2</PartNumber>
    <ETag>"0c78aef83f66abc1fa1e8477f296d394"</ETag>
  </Part>
  <Part>
    <PartNumber>3</PartNumber>
    <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
  </Part>
</CompleteMultipartUpload>


HTTP/1 200 OK
x-wos-request-id: 100315319214214320170602225414pFHJIshn
Access-Control-Allow-Origin: *
Connection: close
Content-Type: application/xml
Content-Length: 301
Date: Mon, 05 Jun 2017 09:56:01 GMT
Server: WS-web-server

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CompleteMultipartUploadResult xmlns="https://www.wangsu.com/document">
  <Bucket>r28-sync-data</Bucket>
  <ETag>4dc0dc31f93e3f73c52ce251fcdfcaa2-2</ETag>
  <Key>multiobject</Key>
  <Location>http://example-Bucket.Endpoint/example-Object</Location>
</CompleteMultipartUploadResult>

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!