You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用aws-sdk-go-v2进行S3分片上传遇InvalidPart错误求助

问题根源与修复方案

核心问题

你代码中存在分片编号不匹配的致命错误:

  • 第一个UploadPart请求指定的PartNumber是2,但在构建CompletedPart(p1)时却将PartNumber设为1。
  • AWS S3通过UploadId+PartNumber唯一标识分片,由于你从未上传过编号为1的分片,执行CompleteMultipartUpload时自然找不到对应分片,触发报错。

修复代码

修改第一个UploadPart的PartNumber为1,确保上传的分片编号与提交的CompletedPart编号完全一致:

// 第一个分片上传,PartNumber从2改为1
part, err := s3Client.UploadPart(ctx, &s3.UploadPartInput{
    Bucket:            bucket,
    Key:               key,
    UploadId:          out.UploadId,
    PartNumber:        1, 
    ChecksumAlgorithm: typ,
    Body:              strings.NewReader(helloWorld),
})

额外验证点

  1. 所有上传的分片编号需连续且唯一,范围限制为1~10000
  2. 提交CompletedMultipartUpload时,每个CompletedPart的ETag必须与上传该分片时返回的ETag完全一致
  3. 若启用校验和,需保证CompletedPart中的校验和字段与上传时返回的对应字段完全匹配(你当前代码中这部分逻辑是正确的)

内容的提问来源于stack exchange,提问作者Kokizzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:00:44