tam*_*mmi 2 python google-api google-drive-api
我正在将 jpg 文件上传到我的 Google Drive 帐户。它工作正常,但我需要将其上传到特定文件夹,但不确定如何在元数据中设置父参数。
这是我的代码:
data = {"file": open(filedirectory, 'rb').read(), "title" : filename, "parents" : [{"id": "<folderid>"}]}
drive_url = "https://www.googleapis.com/upload/drive/v3/files?uploadType=media"
drive_r = requests.post(drive_url, data=data, headers={"Authorization": "Bearer " + access_token, "Content-type": "image/jpeg"})
Run Code Online (Sandbox Code Playgroud)
我相信你的目标如下。
requestspython来实现这一点。在的情况下uploadType=media,官方文档是这样说的。
简单上传(uploadType=media)。使用此上传类型可在不提供元数据的情况下快速传输小型媒体文件(5 MB 或更少)。要执行简单上传,请参阅执行简单上传。
因此,为了上传文件内容和文件元数据,请使用uploadType=multipart.
而且,在您的端点中,使用了 Drive API v3。但"parents" : [{"id": "<folderid>"}]适用于 Drive API v2。还需要对其进行修改。
当你的脚本被修改为 时uploadType=multipart,它变成如下。
使用本脚本时,请设置filedirectory, filename, folderid, access_token.
import json
import requests
filedirectory = '###'
filename = '###'
folderid = '###'
access_token = '###'
metadata = {
"name": filename,
"parents": [folderid]
}
files = {
'data': ('metadata', json.dumps(metadata), 'application/json'),
'file': open(filedirectory, "rb").read() # or open(filedirectory, "rb")
}
r = requests.post(
"https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
headers={"Authorization": "Bearer " + access_token},
files=files
)
print(r.text)
Run Code Online (Sandbox Code Playgroud)