问题描述
客户端加密分片上传时,所有分片大小加起来与InitiateMultipartUpload中指定的数据总大小不同。
问题原因
客户端加密场景下,最后一个UploadPart 请求上传数据的大小不符合预期。
客户端加密场景下,在InitiateMultipartUpload时需要携带请求头x-oss-meta-client-side-encryption-data-size
和x-oss-meta-client-side-encryption-part-size
。在后续UploadPart 操作时,需要上传与x-oss-meta-client-side-encryption-part-size
相同大小的数据。对于最后一个part,上传的数据大小应等于该请求头指定的大小减去已上传数据大小。
问题示例
例如您事先发起了一个InitiateMultipartUpload请求:
POST /multipart.data?uploads HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Wed, 22 Feb 2012 08:32:21 GMT
x-oss-storage-class: Archive
Authorization: OSS qn6q**************:77Dv****************
x-oss-meta-client-side-encryption-data-size: 2048
x-oss-meta-client-side-encryption-part-size: 1024
此后您又发起了一个UploadPart请求:
PUT /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC9**** HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length:1024
Date: Wed, 22 Feb 2012 08:32:21 GMT
Authorization: OSS qn6q**************:77Dv****************
x-oss-meta-client-side-encryption-part-size: 1024
[1024 bytes data]
之后发起第二个UploadPart请求:
PUT /multipart.data?partNumber=2&uploadId=0004B9895DBBB6EC9**** HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length:100
Date: Wed, 22 Feb 2012 08:32:21 GMT
Authorization: OSS qn6q**************:77Dv****************
x-oss-meta-client-side-encryption-part-size: 1024
[100 bytes data]
上传数据大小不符合预期,请求返回失败。
解决方案
最后一个Part上传时数据大小需要等于在InitiateMultipartUpload指定的总大小减去所有已上传Part的大小之和。
相关文档
文档内容是否对您有帮助?