Google Drive API在上传时返回404

时间:2017-05-21 10:14:16

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

我正在尝试通过制作XMLHttpRequest,使用Google Drive v3 API将数据上传到文件中。

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

在我发出PUT请求后,它会返回一个404状态代码,其中包含“Not Found”作为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回复。有什么帮助吗?

1 个答案:

答案 0 :(得分:5)

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