问题描述
阿里云对象存储OSS在使用分片上传方式上传文件时,上传小于100 KB的文件可以正常上传,上传大于100 KB的文件时报InvalidPart错误,详细报错信息如下:
One or more of the specified parts could not be found or the specified entity tag might not have matched the part's entity tag
问题原因
PartNumber或ETag错误导致CompleteMultipartUpload提交的Part无效。
解决方案
在将所有数据Part都上传完成后,您必须调用CompleteMultipartUpload接口来完成整个文件的分片上传,服务端在调用CompleteMultipartUpload接口时会对PartNumber和ETag做校验。PartNumber和ETag需满足以下条件:
PartNumber取值为1~10000,PartNumber可以不连续,但必须升序排列。例如第一个Part的PartNumber是1,第二个Part的PartNumber可以是5。
通过CompleteMultipartUpload请求创建的Object,ETag是基于一定计算规则生成的唯一值,但不是其内容的MD5值。ETag值可以用于检查Object内容是否发生变化,不建议使用ETag作为Object内容的MD5来校验数据完整性。
说明对于Put Object请求创建的Object,ETag值是其内容的MD5值。
对于其他方式创建的Object,ETag值是基于一定计算规则生成的唯一值。
更多信息,请参见CompleteMultipartUpload。
文档内容是否对您有帮助?