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
相关产品推荐
相关产品推荐

