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

Google Drive API v3上传PDF时报HttpError 404父文件夹未找到问题

问题排查及解决方案

核心常见原因(90%以上该场景404的触发点)

  • 如果你要上传的父文件夹位于共享云端硬盘(Shared Drive),你在调用files.create接口时必须添加supportsAllDrives=True参数,Google Drive API默认只会检索服务账号自身的个人 Drive,不会主动查询共享云端硬盘的资源,找不到对应ID就会返回404。
  • 确认你传入的parentFolderID格式正确:正确的ID是文件夹链接中https://drive.google.com/drive/folders/后的字符串,确保没有前后空格、多余字符,也没有误传文件ID或者更上层未共享的文件夹ID。
  • 确认你共享目标文件夹时,填写的是服务账号的完整邮箱(格式通常为xxx@<项目ID>.iam.gserviceaccount.com),而不是你个人账号的邮箱。

次要排查点

  • 你当前代码里的file.Upload()是多余操作:调用execute()的时候已经完成了上传流程,这行可以直接删除,避免后续报错。
  • 可以加一行打印parentFolderID的代码,确认实际传入的参数和你预期的文件夹ID一致,避免变量赋值错误传入了空值或者错误值。

修正后的代码示例

def deliver_to_google_drive(output_pdf, creds, parentFolderID, folderToCreate):
    drive_service = build('drive', 'v3', credentials=creds)
    file_metadata = {
        'parents':[parentFolderID],
        # 如果你不想上传后的文件名带本地路径,可替换为os.path.basename(output_pdf)
        'name': output_pdf
    }
    media = MediaFileUpload(output_pdf, mimetype='application/pdf',resumable=True)
    file = drive_service.files().create(
        body=file_metadata,
        media_body=media,
        fields='id',
        supportsAllDrives=True # 新增参数适配共享云端硬盘场景
    ).execute() 
    print('File ID: %s' % file.get('id'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 11:15:04