如何使用 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,
)
自从我使用 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,
)