gpt4 book ai didi

python - 如何使用python请求使用google drive API上传和删除文件

转载 作者:行者123 更新时间:2023-12-04 12:34:27 26 4
gpt4 key购买 nike

我正在尝试使用请求将图像上传到谷歌驱动器,但它不起作用,因为请求不断给我一个状态 401(错误的凭据)。我正在使用给我的访问 token ,所以我不知道发生了什么。
这是我的代码:

tokendrive = "ya29.A0AfH6SMDn1ti-5u8gjLQhHf3ffILkR2_8mSRBoap7hY8ZuIGoFomPhZJAi_hVgORZkBJtBeTDhlPnOeksNZvwrUPgBcuHle5BMqULMBY7Y97fIaMGuOqSAQIrSyXnqLbtDLEwrnCAXfHHSVxtWAbX80pHkarG"
url = "https://www.reddit.com/r/LiminalSpace/comments/lwoipa/i_guess_nobody_woke_me_up/"
myid = "1QoepljKHkjSarx0kCcwEnHjRA5fBP4sU"
subid = lwoipa
r = requests.get(url)
headers = {'Authorization': 'Bearer ' + tokendrive}
para = {"name": submission.id + ".png",
"parents": [myid]}
files = {"data": ("metadata", json.dumps(para), "application/json; charset=UTF-8"),
"file": io.BytesIO(requests.get(url).content)}
response = requests.post("https://www.googleapis.com/upload/drive/v3/files",headers=headers,files=files)
print(response.text)

最佳答案

我相信你的目标和你目前的情况如下。

  • 您想将文件上传到 Google 云端硬盘。
  • 您想删除 Google Drive 上的文件。
  • 您想使用 request 实现此目的python的模块。
  • 从您的端点,您想使用 Drive API v3。
  • 您的访问 token 可用于使用 Drive API 上传和删除文件。

  • retrofit 要点:
  • 如果您的访问 token 可用于将文件上传到 Google Drive,则需要修改使用访问 token 的脚本。这种情况请修改TokenBearer .我认为你的错误的原因可能是由于这个。
  • 使用 Drive API v3 时,parents 的属性是 "parents": [myid] .在当前阶段,请在此处使用一个文件夹 ID。
  • 在 Drive API v3 的情况下,文件名可以用 name 给出。而不是 title . title用于 Drive API v2。

  • 当以上几点反射(reflect)到你的脚本中时,它变成如下。
    修改后的脚本:
    此修改后的脚本将 的文件上传到 Google Drive。在您使用此脚本之前,请再次确认您要使用的变量。
    headers = {'Authorization': f'Bearer {tokendrive}'} # or 'Bearer ' + tokendrive
    para = {
    "name": "image_url.jpg",
    "parents": [myid]
    }
    files = {
    "data": ("metadata", json.dumps(para), "application/json; charset=UTF-8"),
    "file": io.BytesIO(requests.get(submission.url).content)
    }
    response = requests.post(
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
    headers=headers,
    files=files
    )
    print(response.text)
  • 在此脚本中,返回以下值。
      {
    "kind": "drive#file",
    "id": "###",
    "name": "image_url.jpg",
    "mimeType": "image/jpeg"
    }
  • 在此修改后的脚本中,上传的最大文件大小为 5 MB。当您要上传超过 5 MB 的文件时,请使用可恢复上传。在这种情况下,我认为这个线程可能有用。 Ref

  • 示例脚本:
    此示例脚本删除 Google Drive 上的文件。
    fileId = '###' # Please set the file ID you want to delete.
    headers = {'Authorization': f'Bearer {tokendrive}'} # or 'Bearer ' + tokendrive
    response = requests.delete(
    "https://www.googleapis.com/drive/v3/files/" + fileId,
    headers=headers,
    )
    print(response.text)
  • 在这种情况下,不返回任何值。这是当前的规范。
  • 重要信息 : 这个脚本彻底删除了fileId的文件.所以请注意这一点。我想建议使用示例文件进行测试。

  • 引用:
  • Upload file data
  • Files: delete
  • 关于python - 如何使用python请求使用google drive API上传和删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66224900/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com