Google 驱动器 API 在文件中添加一些字符串

Google Drive API adding some string in file

我一直在尝试仅使用 google API 和 Python HTTPS 模块来替换文件。但是当我更换它时。它将一些字符串添加到带有文本的文件中。 代码:

headers = {
        "Authorization": "Bearer " + str(Acesstoken),
    }

files = {  
    'file': open("./Test.txt", "rb"),
    "mimeType": "text/plain"
    }


r2= requests.patch(
    "https://www.googleapis.com/upload/drive/v3/files/" + updateFileId,
    headers= headers,
    files = files,
)

替换文件前 Google 驱动器上的文本:

Test

替换文件后 Google 驱动器上的文本:

--a164a6e367e3577590ab9eb85b487e21
Content-Disposition: form-data; name="file"; filename="Test.txt"

Test 2
--a164a6e367e3577590ab9eb85b487e21
Content-Disposition: form-data; name="mimeType"; filename="mimeType"

text/plain
--a164a6e367e3577590ab9eb85b487e21--

提前感谢@DaImTo

我刚刚解锁了聊天功能。我不介意说话。

我认为在您的脚本中,需要修改端点。根据您的情况,请添加uploadType=media的查询参数,如下所示。

顺便说一句,在这个脚本中,假设Google Drive 的文件是文本文件。从您的评论来看,您似乎正试图将 ZIP 文件覆盖为文本数据。在这种情况下,mimeType 不会更改。所以我想建议 Google 驱动器上的文件和上传文件之间的 mimeType 相同。

模式 1

如果要更新 ./Test.txt 驱动器 Google 上的文本文件,如何进行以下修改?

修改后的脚本:

在此脚本中,Google 驱动器上的文本文件被 ./Test.txt 覆盖。

import requests

accessToken = '###' # Please set your access token.
updateFileId = '###' # Please set the file ID fot the text file on Google Drive.

headers = {"Authorization": "Bearer " + accessToken}
file = open("./Test.txt", "rb")
r2 = requests.patch(
    "https://www.googleapis.com/upload/drive/v3/files/" + updateFileId + "?uploadType=media",
    headers=headers,
    data=file,
)

模式 2

如果要将文本文件追加到 ./Test.txt 的 Google 驱动器上,如何进行以下修改?

修改后的脚本:

import io
import requests

accessToken = '###' # Please set your access token.
updateFileId = '###' # Please set the file ID fot the text file on Google Drive.

headers = {"Authorization": "Bearer " + accessToken}

r1 = requests.get("https://www.googleapis.com/drive/v3/files/" + updateFileId + "?alt=media", headers=headers)

file = open("./Test.txt", "rt")
merged = r1.text + file.read()
r2 = requests.patch(
    "https://www.googleapis.com/upload/drive/v3/files/" + updateFileId + "?uploadType=media",
    headers=headers,
    data=io.BytesIO(bytes(merged, 'utf-8')),
)
  • 在这种情况下,首先检索文本数据。并且,通过合并下载文本的文本和 ./Test.txt 的文本,更新文本文件。

注:

  • 如果您想覆盖 Google 驱动器上的 ZIP 文件,请使用示例 ZIP 文件作为上传文件。

参考文献: