Google 驱动器 Api v3 上传到 sharedDrive 即使使用 supportsAllDrives=true 也无法正常工作
Google Drive Api v3 upload to sharedDrive not working even with supportsAllDrives=true
我正在尝试将图像上传到共享云端硬盘中的文件夹。我设法在“我的云端硬盘”上做到了这一点,但是当我试图在共享云端硬盘上实现这一点时,我收到以下错误:
{
"error": {
"code": 404,
"message": "File not found: 1ZQuuXVDx3I5rs6OnH8WvbWfo6HplnfW8.",
"errors": [
{
"locationType": "parameter",
"domain": "global",
"message": "File not found: 1ZQuuXVDx3I5rs6OnH8WvbWfo6HplnfW8.",
"reason": "notFound",
"location": "fileId"
}
]
}
}
这让我很抓狂,因为我已经阅读了很多次文档,但找不到解决方案。我试过 Android 和 Retrofit
,Postman
,甚至 Google 提供的 OAuth2 Playground
。
请求是这个,复制粘贴自 OAuth2 Playground
:
POST /upload/drive/v3/files?uploadType=multipart HTTP/1.1
Host: www.googleapis.com
Content-length: 50295
Content-type: multipart/related; boundary="===============323232404548=="
Authorization: Bearer ya29.a0AfH6SMBHmEo0Q9-8dXhhCY7wGrTj9PsFTCd0YUdLtyGJSfdO
--===============323232404548==
Content-type: application/json
{
"supportsAllDrives": true,
"driveId":"0APRAdsf3Sdfsk9PVA",
"name":"test.jpeg",
"parents":[
"1ZQuuXVDx3I5rs6OnH8WvbWfo6HplnfW8"
]
}
--===============323232404548==
Content-type: image/jpeg
到底是什么问题?我也尝试过使用 driveId
和 supportsAllDrives
到请求的 header。
非常感谢您的帮助。我关注的链接:
https://developers.google.com/drive/api/v3/manage-uploads#multipart and https://developers.google.com/drive/api/v3/reference/files/create
如document中所示,supportsAllDrives
是一个查询参数。这意味着它应该包含在 URI 而不是请求正文中。
发件人:
https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart
收件人:
https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&supportsAllDrives=true
如果查询参数中不包含 supportsAllDrives
,则默认值为 false。这会导致您的响应显示“找不到文件”消息,因为它无法找到或访问共享驱动器。
我正在尝试将图像上传到共享云端硬盘中的文件夹。我设法在“我的云端硬盘”上做到了这一点,但是当我试图在共享云端硬盘上实现这一点时,我收到以下错误:
{
"error": {
"code": 404,
"message": "File not found: 1ZQuuXVDx3I5rs6OnH8WvbWfo6HplnfW8.",
"errors": [
{
"locationType": "parameter",
"domain": "global",
"message": "File not found: 1ZQuuXVDx3I5rs6OnH8WvbWfo6HplnfW8.",
"reason": "notFound",
"location": "fileId"
}
]
}
}
这让我很抓狂,因为我已经阅读了很多次文档,但找不到解决方案。我试过 Android 和 Retrofit
,Postman
,甚至 Google 提供的 OAuth2 Playground
。
请求是这个,复制粘贴自 OAuth2 Playground
:
POST /upload/drive/v3/files?uploadType=multipart HTTP/1.1
Host: www.googleapis.com
Content-length: 50295
Content-type: multipart/related; boundary="===============323232404548=="
Authorization: Bearer ya29.a0AfH6SMBHmEo0Q9-8dXhhCY7wGrTj9PsFTCd0YUdLtyGJSfdO
--===============323232404548==
Content-type: application/json
{
"supportsAllDrives": true,
"driveId":"0APRAdsf3Sdfsk9PVA",
"name":"test.jpeg",
"parents":[
"1ZQuuXVDx3I5rs6OnH8WvbWfo6HplnfW8"
]
}
--===============323232404548==
Content-type: image/jpeg
到底是什么问题?我也尝试过使用 driveId
和 supportsAllDrives
到请求的 header。
非常感谢您的帮助。我关注的链接:
https://developers.google.com/drive/api/v3/manage-uploads#multipart and https://developers.google.com/drive/api/v3/reference/files/create
如document中所示,supportsAllDrives
是一个查询参数。这意味着它应该包含在 URI 而不是请求正文中。
发件人:
https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart
收件人:
https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&supportsAllDrives=true
如果查询参数中不包含 supportsAllDrives
,则默认值为 false。这会导致您的响应显示“找不到文件”消息,因为它无法找到或访问共享驱动器。