我正在尝试通过制作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回复。有什么帮助吗?
答案 0 :(得分:5)
原来我试图做错事。我想更新一个文件,而不是上传一个。我应该使用"PUT"
解释here,而不是使用"PATCH"
。这返回了带有Location
标题的200响应以进行实际更改。