问题描述
客户端加密场景下CompleteMultipartUpload 时指定的分片数目不符合预期。
问题原因
客户端加密场景下,在InitiateMultipartUpload时需要指定客户端预期的数据大小以及分片大小,服务端会根据设定的数据大小以及分片大小计算出预期的分片数目。在CompleteMultipartUpload 时如果传入的分片数目超过了预期的分片数目则会报此错误。
问题示例
例如您事先发起了一个InitiateMultipartUpload请求,预期的数据大小为1,000,000B
、预期的分片大小为500,000B
:
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: 1000000
x-oss-meta-client-side-encryption-part-size: 500000
根据简单计算,可以得出预期的分片数目为2,此后您又发起了一个CompleteMultipartUpload请求,传入的分片数目为3:
POST /multipart.data?uploadId=0004B9B2D2F7815C432C9057C031****&encoding-type=url HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 1056
Date: Fri, 24 Feb 2012 10:19:18 GMT
Authorization: OSS qn6q**************:77Dv****************
<CompleteMultipartUpload>
<Part>
<PartNumber>1</PartNumber>
<ETag>"3349DC700140D7F86A0784842780****"</ETag>
</Part>
<Part>
<PartNumber>5</PartNumber>
<ETag>"8EFDA8BE206636A695359836FE0A****"</ETag>
</Part>
<Part>
<PartNumber>8</PartNumber>
<ETag>"8C315065167132444177411FDA14****"</ETag>
</Part>
</CompleteMultipartUpload>
Complete时传入的分片个数超过了预期的分片个数,请求返回失败。
解决方案
调整CompleteMultipartUpload请求传入的分片数目以满足小于等于分片数目的预期值。
调整InitiateMultipartUpload请求设定的数据大小和分片大小以允许Complete更大的分片数目。
相关文档
文档内容是否对您有帮助?