该接口用于上传分片数据,在调用此接口前,需要先通过 CreateMultipartUpload 接口初始化分片,获取分片任务的UploadId
。每次上传成功后,返回的ETag
为上传分片的ETag
。分片任务中的partNumber
是唯一的,对同一个partNumber
多次上传,最后上传的数据会覆盖原有的。同一个对象的同一个分片任务,支持多个分片同时上传,上传顺序不影响最终的合并分片操作。
除了最后一个分片,其他分片大小需要大于等于 4MB。上传的分片的编号也有范围限制,其范围是 [1, 10000]。
如果您使用服务端加密,TOS在收到您上传的数据时,在文件级别加密这些数据,再将加密的数据持久化存储;您下载文件时,TOS自动将加密数据解密后返回给您。如果选择使用客户提供的加密密钥(SSE-C)进行服务端加密,那么此次请求必须携带与 CreateMultiPartUpload
相同的 SSE-C 加密头域。
TOS 分片上传支持服务端加密功能,除非您使用 SSE-C 加密方式,否则您不需要在每个 UploadPart
请求中携带加密参数,您只需要在最初的 CreateMultiPartUpload
请求中指定服务端加密的参数。更多相关信息,请参见 CreateMultipartUpload。
如果您在CreateMultiPartUpload
请求中使用 SSE-C 加密方式,你必须在每个 UploadPart
请求中携带以下头域:
关于服务端加密的更多详细信息,请参见服务端加密概述。
PUT /objectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1 Host: bucketname.tos-cn-beijing.volces.com Date: GMT Date Authorization: authorization string Content-Length: length <part content>
该请求使用的公共请求消息头,请参见公共参数。
名称 | 位置 | 参数类型 | 是否必选 | 示例值 | 说明 |
---|---|---|---|---|---|
partNumber | Query | Integer | 是 | 1 | 上传的分片号,有效取值 [1,10000]。 |
uploadId | Query | String | 是 | f93f6fc9da94371f321e1008 | 初始化分片任务返回的分片任务 ID,用于唯一标识上传的分片属于哪个对象。 |
Content-Length | Header | Integer | 是 | 100 | 消息体的大小。 |
Content-MD5 | Header | String | 否 | XrY7u+Ae7tCTyyK7j1rNww== | 消息体的 Base64MD5 摘要。 |
x-tos-server-side-encryption-customer-algorithm | Header | String | 否,使用 SSE-C 加密时,必选。 | AES256 | 指定 SSE-C 加密对象要使用的算法,取值说明如下:
|
x-tos-server-side-encryption-customer-key | Header | String | 否,使用 SSE-C 加密时,必选。 | YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE= | 与 |
x-tos-server-side-encryption-customer-key-MD5 | Header | String | 否,使用 SSE-C 加密时,必选。 | 0gYVWExOAz67jX5A6qY4+A== | 与 x-tos-server-side-encryption-customer-key 配套使用,该头域表示加密对象使用的密钥的MD5值。该头域由密钥的 128-bit MD5 值经过 base64-encoded 得到,该值用于消息完整性检查,确认加密密钥在传输过程中没有出错。 |
x-tos-traffic-limit | Header | String | 否 | 819200 | TOS 提供单链接限速功能,在上传、下载文件等操作中进行流控控制,以保证其他应用的网络带宽。取值说明如下:
|
x-tos-traffic-limit | Query | String | 否 | 819200 | TOS 提供单链接限速功能,在上传、下载文件等操作中进行流控控制,以保证其他应用的网络带宽。取值说明如下:
|
该请求中无请求消息元素。
该请求返回的公共响应消息头,请参见公共参数。
名称 | 参数类型 | 示例值 | 说明 |
---|---|---|---|
x-tos-server-side-encryption | String | AES256 | 对象是 SSE-TOS 加密或 SSE-KMS 时返回该头域,该头域表示对象的服务端加密方式,取值如下:
|
x-tos-server-side-encryption-kms-key-id | String | trn:kms:cn-beijing:20000111:keyrings/ring-test/keys/key-test | 对象采用 SSE-KMS 加密方式时返回该头域,该头域表示 SSE-KMS 加密使用的 KMS 主密钥 ID。 |
x-tos-server-side-encryption-customer-algorithm | String | AES256 | 对象是 SSE-C 加密时返回此头域,确认使用的加密算法。 |
x-tos-server-side-encryption-customer-key-MD5 | String | 0gYVWExOAz67jX5A6qY4+A== | 对象是 SSE-C 加密时返回此头域,该头域表示加密使用的密钥的 MD5 值。 |
x-tos-hash-crc64ecma | Integer | 6186290338114851376 | 表示该对象的 64 位 CRC 值。该 64 位 CRC 根据 ECMA-182 标准计算得出。 说明 对 TOS 服务端支持 64 位 CRC 校验前创建的对象,则该消息头不会出现在响应消息中。 |
x-tos-qos-delay-time | Integer | 10 | 该头域表示请求被流控时长,单位为ms。上传类请求会返回精确的被流控的时长;copy类请求或者下载类请求会返回根据流控程度和文件大小估算出的被流控的时长。 |
该请求响应中无消息元素。
PUT /objectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1 Host: bucketname.tos-cn-beijing.volces.com Date: Fri, 30 Jul 2021 00:09:01 GMT Authorization: authorization string Content-Length: 102400 <102400 Byte part content>
HTTP/1.1 200 OK x-tos-id-2: 4fac130c7d9d0036-a444ed0 x-tos-request-id: 4fac130c7d9d0036-a444ed0 x-tos-hash-crc64ecma: 6186290338114851376 Date: Fri, 30 Jul 2021 00:09:01 GMT server: TosServer ETag: "ef176a6c424f954fa42d4cde03949897" Content-Length: 0