文档

0005-00000420

更新时间:

问题描述

客户端加密分片上传时,所有分片大小加起来与InitiateMultipartUpload中指定的数据总大小不同。

问题原因

客户端加密场景下,最后一个UploadPart 请求上传数据的大小不符合预期。

客户端加密场景下,在InitiateMultipartUpload时需要携带请求头x-oss-meta-client-side-encryption-data-sizex-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的大小之和。

相关文档