文档

0005-00000411

更新时间:

问题描述

客户端加密场景下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时传入的分片个数超过了预期的分片个数,请求返回失败。

解决方案

  1. 调整CompleteMultipartUpload请求传入的分片数目以满足小于等于分片数目的预期值。

  2. 调整InitiateMultipartUpload请求设定的数据大小和分片大小以允许Complete更大的分片数目。

相关文档