python - 使用 Python 中的请求将文件上传到 Google 云端硬盘

标签 python google-api google-drive-api python-requests

我正在努力通过他们的 API 将文件正确上传到 Google 云端硬盘。我正在使用 Python,我知道有一个用于 Google API 的客户端库。这是我目前拥有的。运行以下代码时,会在 Google Drive 中创建一个空的无标题文档,它不在正确的目录 root/level_1 中。我不确定我对 datafiles 对象做错了什么。代码中有什么突出的地方吗?

这是 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。

修改后的脚本:

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/

相关文章:

asp.net-mvc - 来自 google 控制台的动态重定向 url - oAuth

javascript - Google Drive API 获取缩略图

google-sheets - 通过 pandas_gbq 将 bigquery 谷歌表联合数据源读取到云数据实验室的问题

python - Nuke 访问错误的 Python 版本

python - 如何使用 rdflib 实例化本体?

php - 从 Google OAuth 2.0 PHP API 获取用户信息

php - Google API PHP 离线访问, "invalid_grant: Code was already redeemed"

android - 从哪里获得 Drive API v2 和依赖项的 Android 库(首选 Maven)?

javascript - Flask 静态进度屏幕

python - 如何设置线程超时?