分段上传期间“找不到一个或多个指定部分”

Ken*_*her 5 amazon-s3

使用 REST API 执行分段上传(并行上传多个部分)时,我从 S3 收到以下错误。

One or more of the specified parts could not be found.  The part may not have been uploaded, or the specified entity tag may not match the part's entity tag.
Run Code Online (Sandbox Code Playgroud)

不过,我已经验证所有部分都正确上传。我什至进行了wireshark跟踪,它显示所有部分都正确上传。还有什么可能导致此错误?

Ken*_*her 1

这里需要注意的一件事是,在分段完成期间,完成消息中的部分编号需要与上传期间指示的部分编号相匹配。例如,在多部分完成中,例如:

<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUpload>
<Part><PartNumber>1</PartNumber><ETag>"4ee5c4f1b14bbda5333072ee501fbbbb"</ETag></Part>
<Part><PartNumber>2</PartNumber><ETag>"2bb626328bc9f6e5318b78311ea7c7c8"</ETag></Part>
<Part><PartNumber>3</PartNumber><ETag>"a024268b53f21f3cffe67c84202b6c37"</ETag></Part>
<Part><PartNumber>4</PartNumber><ETag>"04da279d88080c80dcdef0fa6c2cb047"</ETag></Part>
</CompleteMultipartUpload>
Run Code Online (Sandbox Code Playgroud)

确保PartNumber此处正确。在这里不小心使用上传完成的顺序而不是上传部分的编号是一个很容易犯的错误。如果情况并非如此,即使 S3 上确实存在具有所述 ETag 的部分,您也会收到所看到的错误。