我正在用 python 创建一个 Flask 应用程序,需要使用 Pydrive 库和 Google Drive API 将本地文件移动到 google 驱动器。一切顺利,直到我上传文件,然后出现以下错误:
pydrive.files.ApiRequestError:
我的代码如下。
gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)
if file_ext == ".jpg":
mimeType = "image/jpeg"
elif file_ext == ".png":
mimeType = "image/png"
elif file_ext == ".gif":
mimeType = "image/gif"
elif file_ext == ".mp4":
mimeType = "video/mp4"
elif file_ext == ".mp3":
mimeType = "audio/mpeg"
elif file_ext == ".wav":
mimeType = "audio/wav"
elif file_ext == ".bmp":
mimeType = "image/bmp"
elif file_ext == ".docx":
mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
elif file_ext == ".txt":
mimeType = "text/plain"
elif file_ext == ".MOV":
mimeType = "video/quicktime"
elif file_ext == ".pdf":
mimeType = "application/pdf"
file1 = drive.CreateFile({"mimeType": mimeType, "parents": [{"kind": "drive#fileLink", "id": uniqueID}]}) #uniqueID is defined earlier on based on the fileID in my database
file1.SetContentFile(filename)
file1.Upload()
任何帮助将不胜感激,因为该项目是为大学而设计的,我在 Flask 方面并不是最有经验的,更不用说 PyDrive 了!
谢谢:)
事实证明修复很简单,我没有在行中提供正确的文件ID
file1 = drive.CreateFile({"mimeType": mimeType, "parents": [{"kind": "drive#fileLink", "id": uniqueID}]})
,我正在创建自己的文件ID作为uniqueID,认为这只是分配给文件的ID,它实际上是引用的ID您要上传到的文件夹,您可以从 Google 云端硬盘文件夹的 URL 中获取该文件夹。正确的行是file1 = drive.CreateFile({"mimeType": mimeType, "parents": [{"id": "11Ys4m6_HReCVfaZvpm4n84IMXjOX42yX"}]})
,希望可以帮助其他遇到同样问题的人!
如果您对文件夹 ID 使用双引号而不是单引号,也会发生这种情况。 所以,这样做:
file1 = drive.CreateFile({'parents': [{'id' : 'folder id'}], 'title' :
'your title'})
而不是这个:
file1 = drive.CreateFile({'parents': [{'id' : "folder id"}], 'title' :
'your title'})
希望这有帮助!