如何使用 google 驱动器 API 替换 google 驱动器中的文件,修复 google 驱动器 API *fileIdInUse* 中的错误

How to replace file in google drive using google drive API, Fix Error In google Drive API *fileIdInUse*

自从我使用 Google 驱动器 API 以来已经有一段时间了。我想使用 Google Drive API 替换文件。我只想使用 Python HTTP 请求模块来做到这一点。不幸的是,我总是遇到错误。你能回应一下吗?将不胜感激。

代码:

filedirectory = './Test.txt'
filename = 'Test.txt'
folderid = 'XXXXX'
updateFileId = 'XXXX'

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

metadataF= {
    'id':updateFileId,
    'fileId': updateFileId,
    'name': filename,
    'parents':[folderid]
}

files = {
    'data':('metadata', json.dumps(metadataF), 'application/json; charset=UTF-8'), 
    'file': open("./Test.txt", "rb"),
    }

r2= requests.post(
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
    headers= headers,
    files= files,
)

错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "fileIdInUse",
    "message": "A file already exists with the provided ID."
   }
  ],
  "code": 409,
  "message": "A file already exists with the provided ID."
 }
}
<Response [409]>

如果你能帮助我解决这个问题,那将非常有帮助。

您使用了错误的端点和错误的 HTTP 类型。

您正在使用 Files.create 终点。

requests.post(
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
    headers= headers,
    files= files,

要更新现有文件,请使用 Files.update

这是一个 HTTP PATCH 调用,需要您发送文件 ID。

PATCH https://www.googleapis.com/upload/drive/v3/files/fileId

你需要记得在请求中传递id。请注意上面请求中的 fileId 部分。

filedirectory = './Test.txt'
filename = 'Test.txt'
folderid = 'XXXXX'
updateFileId = 'XXXX'

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

metadataF= {
    'name': filename,
    'parents':[folderid]
}

files = {
    'data':('metadata', json.dumps(metadataF), 'application/json; charset=UTF-8'), 
    'file': open("./Test.txt", "rb"),
    }

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