文档中心 对象存储 CompleteMultipartUpload

CompleteMultipartUpload

更新时间:2023-08-17 17:36:31

1、如果用户上传完所有的段,就可以调用合并段接口,系统将在服务端将用户指定的段合并成一个完整的对象。在执行“合并段”操作以前,用户不能下载已经上传的数据。

2、在合并段时需要将多段上传任务初始化时记录的附加消息头信息拷贝到对象元数据中,其处理过程和普通上传对象带这些消息头的处理过程相同。

3、已经上传的段,只要没有取消对应的多段上传任务,都要占用用户的容量配额;对应的多段上传任务“合并段”操作完成后,只有指定的多段数据占用容量配额,用户上传的其他此多段任务对应的段数据如果没有包含在“合并段”操作制定的段列表中,“合并段”完成后删除多余的段数据,且同时释放容量配额。

4、合并完成的多段上传数据可以通过已有的下载对象接口,下载整个多段上传对象。

5、合并完成的多段上传数据可以通过已有的删除对象接口,删除整个多段上传对象的所有分段数据,删除后不可恢复。

6、合并完成的多段上传数据不记录整个对象的MD5作为Etag,在下载多段数据或List空间内对象看到的多段数据其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响应的上传id yes

请求头部

仅使用公共请求头部

请求主体

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

元素名称 描述 是否必选
CompleteMultipartUpload 合并的段列表。
类型:XML。
父节点:空
子节点:一个或多个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
类型:字符串
父节点:ComleteMultipartUpload
Bucket 合并段所在的空间
类型:字符串
父节点:CompleteMultipartUpload
Key 合并得到对象的key
类型:字符串
父节点:CompleteMultipartUpload
ETag 根据各个段的ETag计算得出的结果
类型:字符串
父节点:CompleteMultipartUpload

特殊错误

Situation Http Status Error Code Message
消息体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>
本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!