我正在努力通过他们的 API 将文件正确上传到 Google 云端硬盘。我正在使用 Python,我知道有一个用于 Google API 的客户端库。这是我目前拥有的。运行以下代码时,会在 Google Drive 中创建一个空的无标题文档,它不在正确的目录 root/level_1
中。我不确定我对 data
和 files
对象做错了什么。代码中有什么突出的地方吗?
这是 docs我正在关注。
import json
import requests
url = "https://www.googleapis.com/upload/drive/v2/files?access_token=ACCESS_TOKEN&uploadType=multipart"
files = {"file": requests.get("image_url").content}
data = {
"title": "image_url.jpg",
"parents": ["root", "level_1"]
}
response = requests.post(url, data=json.dumps(data), files=files)
# json.loads(response.text)["title"] = "Untitled"
return response
最佳答案
这个修改怎么样?
修改点:
- 当您使用 Drive API 时,访问 token 需要包含在 header 中。
- 当您想将文件插入您想要的 parent 时,请使用文件夹ID。
- 文件夹 ID 是
https://drive.google.com/drive/folders/#####
的#####
。 - 如果要插入文件到根文件夹,可以使用
root
作为ID。
- 文件夹 ID 是
修改后的脚本:
import json
import requests
headers = {"Authorization": "Bearer " + ACCESS_TOKEN}
para = {
"title": "image_url.jpg",
"parents": [{"id": "root"}, {"id": "### folder ID ###"}]
}
files = {
"data": ("metadata", json.dumps(para), "application/json; charset=UTF-8"),
"file": requests.get("image_url").content
}
response = requests.post("https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart", headers=headers, files=files)
return response
注意事项:
- 通过调整您的脚本来使用此修改后的脚本。
- 请注意以下几点。
- 在这个修改后的脚本中,从
image_url
检索到的图像文件被上传到根文件夹和 Google Drive 的### folder ID ###
的文件夹作为“image_url.jpg”的文件名。 - 在这种情况下,“image_url.jpg”有 2 个父项。所以当其中一个被删除时, parent 双方的文件也被删除。
- 在这个修改后的脚本中,从
- 当您使用此脚本时,请再次确认以下两点。
- Drive API 是否启用。
- 访问 token 是否包含将文件上传到 Google 云端硬盘的范围。
如果我误解了你的问题,我很抱歉。
关于python - 使用 Python 中的请求将文件上传到 Google 云端硬盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48715409/