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

Google Cloud Storage分片上传完成时遇InvalidArgument错误(400)

GCS分片上传完成请求返回400 InvalidArgument的排查方案

针对你遇到的GCS分片上传完成时返回400 InvalidArgument的问题,结合你的测试结果(单分片正常、指定单个分片正常、指定两个分片失败),可以从以下几个方向排查:

可能的原因及解决方法

1. 分片ETag格式不匹配

GCS要求Complete请求中ETag必须和分片上传时返回的ETag完全一致,重点注意:

  • 部分客户端返回的ETag会带双引号(比如"892e38f38955a0dc8d70f3db79e0a86b"),如果你的分片上传响应ETag是带引号的,XML请求体里的ETag也必须包含引号,否则会验证失败。
  • 检查ETag的大小写,确保和响应返回的完全一致(GCS的ETag通常是小写,但部分场景可能有差异)。

2. 请求Content-Type头错误

发送CompleteMultipartUpload请求时,必须将Content-Type设置为application/xml。如果头信息设置为text/plain或其他类型,GCS无法正确解析XML请求体,会返回InvalidArgument错误。

3. 分片状态未同步

极少数情况下,分片上传完成后GCS内部还未完成状态同步,此时立即发送Complete请求会失败。可以尝试等待1-2秒后重试请求,排除临时同步问题。

4. 签名验证失败(如果使用签名认证)

如果你的请求采用签名方式认证,需要确认签名计算是否包含了XML请求体的内容。部分签名实现可能只对请求头签名,忽略了请求体,导致GCS验证签名不通过,返回InvalidArgument。

验证步骤

  1. 重新查询已上传的分片列表(通过GCS控制台或List Parts接口),确认两个分片的PartNumber和ETag与请求体中的值完全匹配,包括引号和大小写。
  2. 检查请求的Content-Type头是否严格为application/xml。
  3. 手动等待几秒后重新发送Complete请求,排除临时同步问题。
  4. 若使用签名,重新校验签名生成逻辑,确保包含了请求体的完整内容。

你的测试请求体示例:

<CompleteMultipartUpload>
   <Part>
      <PartNumber>1</PartNumber>
      <ETag>892e38f38955a0dc8d70f3db79e0a86b</ETag>
   </Part>
   <Part>
      <PartNumber>2</PartNumber>
      <ETag>490779791c8f2bf28508e22d75057524</ETag>
   </Part>
</CompleteMultipartUpload>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:23