You need to enable JavaScript to run this app. 调用UploadObjectAsync上传BLOB时抛出Google.Apis 404 Not Found错误的原因
优惠活动
大模型
产品
解决方案
定价
更多

调用UploadObjectAsync上传BLOB时抛出Google.Apis 404 Not Found错误的原因

UploadObjectAsync调用返回404异常的专业解释与排查指引

异常本质

  • 堆栈定位的触发点在UploadHelper.CheckFinalProgress()环节,说明异常并非来自上传请求本身的响应,而是上传流程完成后,SDK执行最终状态校验时的请求被返回404
  • 空字节数组上传可复现完全一致的异常,可排除文件内容、大小对异常触发的影响

常见根因匹配

  • 传入的存储桶参数不符合要求。UploadObjectAsync要求第一个参数传入纯存储桶全局唯一标识,若字符串值中混入gs://前缀、前后空格、大小写不匹配,或对应云项目下从未创建该名称的存储桶,会导致SDK拼接的资源访问路径不存在,触发404。这是当前场景下占比最高的触发原因。
  • 3.2.0版本SDK存在已知逻辑缺陷。该版本在处理单段直传场景时,最终状态校验的资源路径拼接存在bug:当上传对象内容长度为0时,SDK会错误构造不存在的对象元数据请求地址,跳过正常的上传响应解析,直接抛出404异常。这一缺陷可直接解释空字节数组测试复现异常的现象——哪怕上传操作本身已经执行成功。
  • 鉴权权限范围配置不全。如果调用使用的身份凭证仅配置了对象写入权限,缺失目标存储桶的元数据读取权限,Cloud Storage API在收到元数据校验请求时,不会返回403权限不足错误,而是直接返回404 Not Found,伪装成资源不存在的响应,这也是开发人员查阅状态码说明文档时,未找到匹配场景排查指引的核心原因。

快速验证方法

  • 直接打印调用时传入的bucket参数原始字符串,逐字符和云控制台中展示的存储桶名称做比对,剔除多余的非标准字符、路径前缀
  • 同身份、同参数下调用同版本SDK的GetBucketAsync()方法,若该调用同样返回404,即可直接定位是存储桶名称不匹配或权限范围缺失问题
  • 临时升级SDK到3.4.0及以上版本,重新测试空字节数组上传流程,若异常消失即可确认是3.2.0版本的内置逻辑bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 14:24:04