文档简介:
Complete Multipart Upload
该接口通过合并之前的上传片段来完成一次分片上传过程。
用户首先初始化分片上传过程,然后通过Upload Part接口上传所有分片。在成功将一次分片上传过程的所有相关片段上传之后,调用这个接口来结束分片上传过程。当收到这个请求的时候,OOS会以分片号升序排列的方式将所有片段依次拼接来创建一个新的对象。在这个Complete Multipart Upload请求中,用户需要提供一个片段列表。同时,必须确保这个片段列表中的所有片段必须是已经上传完成的,Complete Multipart Upload操作会将片段列表中提供的片段拼接起来。对片段列表中的每个片段,需要提供该片段上传完成时返回的ETag头的值和对应的分片号。
OOS提供了不合并片段也可以读取Object内容的功能。在没有调用Complete Multipart Upload接口合并片段时,也可以通过调用Get Object接口来获取文件内容,OOS会根据最近一次创建的uploadId,以分片号升序的方式顺序读取片段内容,返回给客户端。
请求语法
POST /ObjectName?uploadId=UploadId HTTP/1.1 Host: BucketName.oos-cn.ctyunapi.cn Date: Date Content-Length: Size Authorization: Signature
<CompleteMultipartUpload> <Part> <PartNumber>PartNumber</PartNumber> <ETag>ETag</ETag> </Part> ... </CompleteMultipartUpload> |
请求参数
无
请求头格式
无
请求元素
名称 |
描述 |
是否必须 |
CompleteMultipartUpload |
请求的容器。 父节点:无 类型:容器 子节点:1个或多个Part元素 |
是 |
Part |
一个片段的容器。 父节点:CompleteMultipartUpload 类型:容器 子节点:PartNumber, ETag |
是 |
PartNumber |
标识片段的分片号。 父节点:Part 类型:Integer |
是 |
ETag |
片段上传完成时返回的Etag内容。 父节点:Part 类型:String |
是 |
返回元素
名称 |
描述 |
CompleteMultipartUploadResult |
包含整个响应的容器。 类型:容器 子节点:Location, Bucket, Key, ETag 父节点:无 |
Location |
新创建对象的URL地址。 类型:URI 父节点:CompleteMultipartUploadResult |
Bucket |
分片上传对应的对象容器。 类型:String 父节点:CompleteMultipartUploadResult |
Key |
新创建的对象的Key。 类型:String 父节点:CompleteMultipartUploadResult |
ETag |
ETag用来标识新创建的对象数据。 类型:String 父节点:CompleteMultipartUploadResult |
出错响应
响应代码 |
描述 |
HTTP状态码 |
InvalidPart |
一个或者多个指定片段无法找到,片段可能没有被上传,或者指定的ETag值跟片段的ETag值不匹配 |
400 Bad Request |
InvalidPartOrder |
片段列表不以升序排列,片段列表必须根据分片号按顺序排列 |
400 Bad Request |
NoSuchUpload |
指定的分片上传过程不存在,上传ID可能非法,分片上传过程可能被终止或者已经完成 |
404Not Found |
InvalidPartSize
|
如果小于5M的分片为2片或者2片以上,会终止合并分片上传。 |
400 Bad Request |
请求示例
下面的分片上传请求在CompleteMultipartUpload元素中指定了三个片段。
POST /example-object?uploadId=AAAsb2FkIElEIGZvciBlbHZpbmcncyWeeS1tb3ZpZS5tMnRzIR RwbG9hZA HTTP/1.1 Host: example-bucket.oos-cn.ctyunapi.cn Date: Mon, 1 Nov 2010 20:34:56 GMT Content-Length: 391 Authorization: AWS 7799e793ce4624ee7e5a:xQE0diMbLRepdf3YB+FIEXAMPLE=
<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.1 200 OK x-amz-id-2: Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg== x-amz-request-id: 656c76696e6727732072657175657374 Date: Mon, 1 Nov 2010 20:34:56 GMT Connection: close Server: CTYUN
<?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult xmlns="/doc/2006-03-01/"> <Location>/span>oos-cn.ctyunapi.cn/example-Object</Location> <Bucket>example-Bucket</Bucket> <Key>example-Object</Key> </CompleteMultipartUploadResult> |