初始化一个MultipartUpload后,调用UploadPart接口根据指定的Object名和uploadId来分块(Part)上传数据。
注意事项
调用UploadPart接口上传Part数据前,必须先调用InitiateMultipartUpload接口来获取OSS服务器生成的uploadId。
如果使用同一个partNumber上传了新的数据,则OSS上已有的partNumber对应的Part数据将被覆盖。
OSS会将服务器端收到Part数据的MD5值放在ETag头返回给用户。
如果调用InitiateMultipartUpload接口时,指定了x-oss-server-side-encryption请求头,则会对上传的Part进行加密编码,并在UploadPart响应头中返回x-oss-server-side-encryption头,其值表明该Part的服务器端加密算法。更多信息,请参见InitiateMultipartUpload。
请求语法
PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: SignatureValue
当您在OSS ON云盒中调用该接口时,您需要将Host替换为云盒Endpoint。更多信息,请参见云盒Endpoint。
请求头
此接口仅涉及公共请求头。更多信息,请参见公共请求头(Common Request Headers)。
请求元素
名称 | 类型 | 是否必选 | 示例值 | 描述 |
partNumber | 正整数 | 是 | 1 | 每一个上传的Part都有一个标识它的号码(partNumber)。 取值:1~10000 单个Part的大小限制为100 KB~5 GB。 说明 MultipartUpload事件中除最后一个Part以外,其他Part的大小都要大于或等于100 KB。因不确定是否为最后一个Part,UploadPart接口并不会立即校验上传Part的大小,只有当CompleteMultipartUpload时才会校验。 |
uploadId | 字符串 | 是 | 0004B9895DBBB6EC9**** | uploadId用于唯一标识上传的Part属于哪个Object。 |
响应头
名称 | 类型 | 示例值 | 描述 |
Content-MD5 | 字符串 | 1B2M2Y8AsgTpgAmY7PhC**** | 表示Part的MD5值。 重要 Part的MD5值指的是客户端上传完成后获取到的分片MD5,并非响应体的MD5。 |
x-oss-hash-crc64ecma | 字符串 | 316181249502703**** | 表示Part的CRC64值。 |
此接口还涉及其他公共响应头,例如Date、x-oss-request-id等。更多信息,请参见公共响应头(Common Response Headers)。
示例
请求示例
PUT /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC9**** HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length:6291456
Date: Wed, 22 Feb 2012 08:32:21 GMT
Authorization: OSS qn6q**************:77Dv****************
[6291456 bytes data]
返回示例
HTTP/1.1 200 OK
Server: AliyunOSS
Content-length: 0
Connection: keep-alive
ETag: "7265F4D211B56873A381D321F586****"
x-oss-request-id: 3e6aba62-1eae-d246-6118-8ff42cd0****
Date: Wed, 22 Feb 2012 08:32:21 GMT
Content-MD5: 1B2M2Y8AsgTpgAmY7Ph****
x-oss-hash-crc64ecma: 316181249502703****
x-oss-server-time: 77
SDK
错误码
错误码 | HTTP状态码 | 描述 |
NoSuchUpload | 404 | 分片上传ID不存在。 |
InvalidArgument | 400 | 超出partNumber范围(1~10000)。 |
InvalidDigest | 400 | 为了保证数据在网络传输过程中不出现错误,用户发送请求时可以携带Content-MD5,OSS计算上传数据的MD5与用户上传的MD5值不一致则表示数据传输出现错误。 |