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

使用Pydrive2上传109MB文件至Google Drive时遇400错误求助

解决Pydrive2上传大文件时的400 Bad Request错误

问题分析

上传109MB文件触发的400错误,核心原因是convert=True参数:Google Drive对可转换为原生格式(如Google Docs/Sheets/Slides)的文件有明确大小限制,比如演示文稿类文件最多支持100MB转换,你的文件已超出阈值,因此触发请求报错。

解决方案

方案1:移除自动转换参数(最直接有效)

如果不需要将文件转为Google Drive原生格式,直接去掉convert=True即可:

def upload_file(file_name: str, directory_id: str, drive: GoogleDrive) -> str:
    """
    上传文件到Google Drive
    参数:
    file_name (str): 要上传的文件名
    directory_id (str): 目标目录的ID
    drive (GoogleDrive): Google Drive实例对象
    返回:
    str: 上传后的文件名
    """
    file = drive.CreateFile(
        {
            "title": file_name,
            "parents": [{"kind": "drive#fileLink", "id": directory_id}],
        }
    )
    file.SetContentFile(file_name)
    # 仅保留支持团队盘的参数,移除convert
    file.Upload(param={"supportsTeamDrives": True})
    return file['title']

方案2:启用分片上传(优化大文件稳定性)

针对100MB以上的文件,建议显式设置分片大小,提升上传成功率:

def upload_file(file_name: str, directory_id: str, drive: GoogleDrive) -> str:
    """
    上传文件到Google Drive
    参数:
    file_name (str): 要上传的文件名
    directory_id (str): 目标目录的ID
    drive (GoogleDrive): Google Drive实例对象
    返回:
    str: 上传后的文件名
    """
    file = drive.CreateFile(
        {
            "title": file_name,
            "parents": [{"kind": "drive#fileLink", "id": directory_id}],
        }
    )
    file.SetContentFile(file_name)
    # 设置10MB分片大小,可根据网络情况调整
    file.ChunkSize = 10 * 1024 * 1024
    file.Upload(param={"supportsTeamDrives": True})
    return file['title']

方案3:若需转换文件(仅适用于小文件)

如果必须转换为Google原生格式,需确保文件大小符合官方限制:

  • 文档类(如docx):最大10MB
  • 表格类(如xlsx):最大50MB
  • 演示文稿类(如pptx):最大100MB

你的109MB文件已超出演示文稿转换上限,这种情况下只能压缩文件大小,或放弃转换需求。

额外检查项

  • 确认目标目录ID是否正确,无效ID也可能触发Bad Request错误
  • 检查Google Drive存储空间是否充足

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:29:54