【问题标题】:Google Drive API returning 404 on uploadGoogle Drive API 在上传时返回 404
【发布时间】:2017-10-21 02:15:00
【问题描述】:

我正在尝试通过发出 XMLHttpRequest 使用 Google Drive v3 API 将数据上传到文件。

我使用返回“0BzAI5S8IJebrUnQtYWFSVzhPdVk”的文件选择器 API 获取文件的 ID,因此上传 URL 应为“https://www.googleapis.com/upload/drive/v3/files/0BzAI5S8IJebrUnQtYWFSVzhPdVk?uploadType=resumable”。

我发出 PUT 请求后,它返回一个 404 状态代码,其中“未找到”作为 responseText。

我之前尝试过,它会返回状态 200,我能够从响应中获取 Location 标头,但现在我无法从任何文件中获取 200 状态代码。

这是我的代码:

// Log the user in using attachClickHandler (https://developers.google.com/identity/sign-in/web/reference#googleauthattachclickhandlercontainer-options--onsuccess-onfailure)

var id = "0BzAI5S8IJebrOFVMTU5Od183Q2M";
var access_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().access_token;

var xhr = new XMLHttpRequest();

xhr.open('PUT', 'https://www.googleapis.com/upload/drive/v3/files/' + id + '?uploadType=resumable');
xhr.setRequestHeader('Authorization', 'Bearer ' + access_token);

xhr.onreadystatechange = function() {
    if (this.readyState == 4) console.log(this.status);
};
xhr.send();

无论我选择哪个文件,它总是输出 404 作为状态码。我按照https://developers.google.com/drive/v3/web/resumable-upload 所说的内容进行操作,但它没有提及您为什么会收到 404 响应。有什么帮助吗?

【问题讨论】:

  • 从您链接的页面中,您缺少一些强制性的 http 标头。否则,404 将表明您使用的文件 ID 存在问题。你确定它是正确的并且可以被登录用户写入吗?
  • 它们绝对是可写的。我已经在我自己的帐户上尝试了三个不同的文件,所以我可以写这三个文件。我还缺少哪些其他标题? X-Content-Upload-Length/Type 标头是可选的,只有在我发送元数据时才需要 Content-Type 标头。
  • 另一个是内容长度。不知道是不是问题,排除所有可能。尝试对 ID 进行其他操作,例如 files.get,只是为了仔细检查 ID。
  • File.get 返回带有正确信息的 200 响应。它也适用于developers.google.com/drive/v3/reference/files/get 上的 API Explorer,因此它不能是 ID。
  • 另外,浏览器不允许我更改 Content-Length 标头。如果我尝试手动更改,浏览器会自动设置标题并引发错误:拒绝设置不安全的标题“Content-Length”

标签: javascript google-drive-api xmlhttprequest http-status-code-404


【解决方案1】:

原来我试图做错事。我想更新一个文件,而不是上传一个。我不应该使用"PUT",而是应该使用"PATCH",正如here 所解释的那样。这会返回带有 Location 标头的 200 响应以进行实际更改。

【讨论】:

  • 这是正确的答案! 文档错误!Resumable Uploads 部分中的文档说使用 PUT,而不是 PATCH。 Here is a screenshot.这几天我一直在用头撞这个,一遍又一遍。
  • 我已使用他们的反馈工具向 Google 发送了反馈以修复文档。我希望他们能尽快修复它:)
  • 好收获! 2020敲门了,文档还是错的。
猜你喜欢
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
相关资源
最近更新 更多