接口通过合并之前的上传片段来完成一次分片上传过程。
用户首先初始化分片上传过程,然后通过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: SignatureValue
<CompleteMultipartUpload>
<Part>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</Part>
...
</CompleteMultipartUpload>
请求参数
名称 | 描述 | 是否必须 |
---|---|---|
CompleteMultipartUpload | 请求的容器。 类型:容器。 子节点:1个或多个Part元素。 |
是 |
Part | 一个片段的容器。 类型:容器。 父节点:CompleteMultipartUpload。 子节点:PartNumber、Etag。 |
是 |
PartNumber | 标识片段的分片号。 类型:Integer。 父节点:Part。 |
是 |
ETag | 片段上传完成时返回的Etag内容。 类型:字符串。 父节点:Part。 |
是 |
响应结果
名称 | 描述 |
---|---|
CompleteMultipartUploadResult | 包含整个响应的容器。 类型:容器。 子节点:Location、 Bucket、Key、ETag。 |
Location | 新创建文件的URI地址。 类型:URI。 父节点:CompleteMultipartUploadResult。 |
Bucket | 分片上传对应的存储桶。 类型:字符串。 父节点:CompleteMultipartUploadResult。 |
Key | 新创建的文件的Key。 类型:字符串。 父节点:CompleteMultipartUploadResult。 |
ETag | ETag用来标识新创建的文件数据。 类型:字符串。 父节点:CompleteMultipartUploadResult。 |
请求示例
下面的分片上传请求在CompleteMultipartUpload元素中指定了三个片段。
POST /example-object?uploadId=638428231343369399 HTTP/1.1
Host: example-bucket.oos-cn.ctyunapi.cn
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 391
Authorization: SignatureValue
<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-request-id: f71d177b56cd4d0bcb3e31403542444a090b0fff0103050709
Date: Mon, 1 Nov 2010 20:34:56 GMT
Server: CTYUN
<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Location>http://example-bucket.oos-cn.ctyunapi.cn/example-Object</Location>
<Bucket>example-Bucket</Bucket>
<Key>example-Object</Key>
</CompleteMultipartUploadResult>