全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

Complete Multipart Upload

最近更新时间:2024-03-06 20:40:02

描述

此操作将完成对象装配之前的块上传任务 。

用户启动一个分块上传任务后,会使用 Upload Parts 接口上传所有的块。成功上传所有相关块之后,用户需要调用此接口来完成分块上传。收到完成请求后,KS3将会根据块序号将所有的块组装起来创建一个新的对象。在用户的完成任务请求中需要用户提供分块列表,由于KS3将会按照列表将所有块连接起来,所以要求用户保证所有的块已经完成上传。对于分块列表中的每一个块,用户需要在上传块时添加块序号以及对象的 ETag 头部,KS3则会在块完成上传后回复完成响应。

请注意,如果 Complete Multipart Upload 请求失败了,用户应用应当能够进行重试操作。

说明

  • 用户提交的part列表必须是升序连续的。

  • 当执行完该操作后,对应的UploadId将会失效。

  • 同一个Object可以同时拥有不同的UploadId,当Complete一个UploadId后,该Object的其他UploadId不受影响。

  • 提交的part列表中的每个part必须是存在的,否则会报InvalidPartOrder。

请求

请求语法

POST /{ObjectKey}?uploadId={UploadId} HTTP/1.1
Host: {BucketName}.{endpoint}
Date: {Date}
Content-Length: {Size}
Authorization: {SignatureValue}

<CompleteMultipartUpload>
    <Part>
        <PartNumber>{PartNumber}</PartNumber>
        <ETag>{ETag}</ETag>
    </Part>
...
</CompleteMultipartUpload>

注意:

请求参数

名称

描述

是否必选

uploadId

此次分块上传事件的唯一标识,是在初始化分块上传时获取的。

  • 类型:String

请求头部

该请求仅使用常用请求头部。获取更多信息,请点击常用请求头部

请求内容

名称

描述

是否必选

CompleteMultipartUpload

请求信息容器。

  • 父节点: 无

  • 类型: Container

  • 子节点: One or more Part elements

Part

某一特定的已上传的块信息容器。

  • 父节点: CompleteMultipartUpload

  • 类型: Container

  • 子节点: PartNumber、ETag

PartNumber

用于标识块的块序列号。

  • 父节点: Part

  • 类型: Integer

ETag

块上传后返回的实体标签。

  • 父节点: Part

  • 类型: String

ChecksumCRC64ECMA

对单个Part内容(不包括头部)计算CRC64值,用于数据完整性校验。关于CRC64的计算标准,请参见:ECMA-182标准

  • 类型:String

  • 默认值:None.

  • 约束条件:无

响应

响应头部

该接口使用常用响应头部。获取更多信息,请点击常用响应头部

名称

描述

x-kss-checksum-crc64ecma

整个Object的CRC64值。

  • 类型:String

x-kss-server-side-encryption

如果存储Object时使用了服务端加密,则响应会包含该头部,值为使用的加密算法。

  • 类型:String

x-kss-server-side-encryption-customer-algorithm

如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来确认使用的解密算法。

  • 类型:String

  • 有效值:AES256

x-kss-server-side-encryption-customer-key-MD5

如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。

  • 类型:String

响应内容

名称

描述

CompleteMultipartUploadResult

响应信息的容器。

  • 类型:Container

  • 子节点: Location, Bucket, Key、ETag

  • 父节点:None

Location

用于标识新创建对象的URI。

  • 类型:URI

  • 父节点:CompleteMultipartUploadResult

Bucket

包含新创建对象的空间的名称。

  • 类型:String

  • 父节点:CompleteMultipartUploadResult

Key

新创建对象的 object key

  • 类型:String

  • 父节点:CompleteMultipartUploadResult

ETag

用于标识Object内容的32位十六进制字符串,不同内容的Object对应着不同的ETag。对于Put ObjectPost Object请求创建的ObjectETag值是其内容的MD5值;对于分块上传方式创建的ObjectETag值是每个分块的MD5值进行字符串拼接后再次计算所得到的MD5值。ETag值可以用于检查Object内容是否发生变化。

  • 类型:String

  • 父节点:CompleteMultipartUploadResult

ChecksumCRC64ECMA

单个Part的CRC64值。

  • 类型:String

示例

请求示例

POST /my-viedo.rm?uploadId=1aa9cfad5e2e405c8f27965feb8b60cc HTTP/1.1
Host: ks3-example.ks3-cn-beijing.ksyuncs.com
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 391
Authorization: authorization string

<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
Date: Mon, 1 Nov 2010 20:34:56 GMT
Connection: keep-alive
x-kss-request-id: f86mktegmek8a875thib7nqmllrd****
x-kss-checksum-crc64ecma: 1408511733533619****
Server: KS3

<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
	<Location>http://ks3-example.ks3-cn-beijing.ksyuncs.com/my-video.rm</Location>
	<Bucket>ks3-example</Bucket>
	<Key>my-video.rm</Key>
	<ETag>"3858f62230ac3c915f300c664312****"</ETag>
	<ChecksumCRC64ECM>1408511733533619****</ChecksumCRC64ECM>
</CompleteMultipartUploadResult>

错误码

错误码

HTTP状态码

描述

EntityTooSmall

400

指定上传的文件过小,分块大小不能小于100KB。

InvalidPart

400

一个或多个指定的块没有找到。块可能没有被上传,也可能因为上传了但实体标签不匹配。

InvalidPartOrder

400

分块列表不连续(分块列表要求必须连续)。

NoSuchUpload

404

指定的分块上传任务不存在。可能是上传ID无效,也可能是分块上传任务已经完成或放弃。

InvalidArgument

400

提供了SSE-S3或SSE-C加密请求头。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈