更新时间:2025-08-18 15:54:03
如果用户已上传所有分片,可以调用合并分片接口,系统会将用户指定的分片在服务端合并为完整对象。在执行“合并分片”操作前,用户无法下载已上传的数据。
合并分片时,需要将多段上传任务初始化时记录的额外消息头信息拷贝到对象元数据中,处理流程与普通上传对象携带这些消息头的流程相同。
已上传的分片,只要对应的多段上传任务未取消,都会占用用户的容量配额;当对应的多段上传任务“合并分片”操作完成后,仅分片列表中指定合并的多段数据会继续占用容量配额,若用户已上传的分片不在本次“合并分片”建立的分片列表中,则多余的分片数据会在合并完成后被删除,对应容量配额也会被释放。
合并后的多段上传数据可通过现有的下载对象接口下载整个多段上传对象。
合并后的多段上传数据可通过现有的删除对象接口删除整个多段上传对象的所有分片数据,且删除后无法恢复。
合并后的多段上传对象不会以整个对象的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>
| 参数名 | 描述 | 是否必填 |
|---|---|---|
| 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>