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

Google Cloud Storage上传异常:参数'total_size'错误及文件未上传问题

合同访谈转写工具GCS上传问题排查与修复

1. 解决total_size参数报错问题

新版google-resumable-media库已移除ResumableUpload类初始化参数中的total_size,改用content_length传递文件大小,或通过文件流自动获取。如果你的代码手动传入了total_size,直接替换即可:

原错误代码示例:

from google.resumable_media.requests import ResumableUpload

upload = ResumableUpload(
    upload_url,
    total_size=file_size,  # 新版不支持该参数
    chunksize=1024*1024
)

修改为:

upload = ResumableUpload(
    upload_url,
    content_length=file_size,  # 替换为content_length
    chunksize=1024*1024
)

更推荐直接使用google-cloud-storage官方客户端方法上传,避免底层库的参数兼容问题:

from google.cloud import storage

client = storage.Client()
bucket = client.get_bucket("你的存储桶名称")
blob = bucket.blob("目标路径/文件名.wav")

# 从本地文件上传
blob.upload_from_filename("本地文件路径.wav")

# 或从文件流上传
with open("本地文件路径.wav", "rb") as f:
    blob.upload_from_file(f)

2. 无报错但文件未上传的排查步骤

(1)验证权限与授权

  • 确认服务账号拥有storage.objects.create权限,IAM角色至少为Storage Object Creator。
  • 检查环境变量GOOGLE_APPLICATION_CREDENTIALS是否指向正确的密钥文件,或代码中是否显式加载密钥:
client = storage.Client.from_service_account_json("服务账号密钥路径.json")

(2)检查代码执行逻辑

  • 确认上传代码块未被条件分支跳过,比如是否存在未触发的if判断。
  • 若手动使用断点续传,需确保调用next_chunk()完成整个上传流程:
with open("本地文件路径.wav", "rb") as f:
    upload.initiate(
        content_type="audio/wav",
        stream=f
    )
    response = None
    while response is None:
        response = upload.next_chunk()

(3)排查日志与请求细节

  • 开启调试日志查看上传请求的完整响应:
import logging
logging.basicConfig(level=logging.DEBUG)
  • 检查存储桶日志(若已开启),确认是否有上传请求到达,是否存在隐藏错误(如路径非法、存储空间不足等)。

(4)验证存储桶与路径配置

  • 确认存储桶名称拼写正确,且未处于归档状态(归档存储需恢复后才能上传)。
  • 检查目标文件路径是否包含特殊字符(如空格、中文),如有需改用英文路径或进行URL编码。

3. 维持依赖版本兼容性

在requirements.txt中指定兼容的版本范围,避免自动安装不兼容版本:

google-cloud-storage>=2.0.0,<3.0.0
google-resumable-media>=2.0.0,<3.0.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:49:53