0

Ich versuche, Daten über die Google Drive v3-API in eine Datei hochzuladen, indem ich eine XMLHttpRequest-Anfrage abrichte.Google Drive API gibt beim Hochladen 404 zurück

Ich bekomme die ID einer Datei mit der File Picker API, die "0BzAI5S8IJebrUnQtYWFSVzhPdVk" zurückgibt, so dass die Upload-URL "https://www.googleapis.com/upload/drive/v3/files/0BzAI5S8IJebrUnQtYWFSVzhPdVk?uploadType=resumable" sein sollte.

Nachdem ich die PUT-Anfrage gemacht habe, wird ein 404-Statuscode mit "Not Found" als responseText zurückgegeben.

Ich habe es vorher versucht und es würde mit Status 200 zurückkehren und ich konnte den Location-Header aus der Antwort abrufen, aber jetzt kann ich keinen 200-Statuscode aus einer Datei abrufen.

Hier ist mein Code:

// 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(); 

Egal, welche Datei ich wählen, es gibt immer 404 als Statuscode. Ich folge, was es unter https://developers.google.com/drive/v3/web/resumable-upload sagt, aber es erwähnt nichts, warum Sie eine 404-Antwort erhalten würden. Irgendeine Hilfe?

+0

Von der Seite, die Sie verknüpfen, fehlen einige obligatorische HTTP-Header. Andernfalls würde 404 vorschlagen, dass ein Problem mit der von Ihnen verwendeten Datei-ID vorliegt. Sind Sie sicher, dass es korrekt ist und vom angemeldeten Benutzer beschreibbar ist? – pinoyyid

+0

Sie sind definitiv beschreibbar. Ich habe es mit drei verschiedenen Dateien auf meinem eigenen Konto ausprobiert, die ich selbst besitze, damit ich an alle drei schreiben kann. Welche anderen Header fehlt mir? Die X-Content-Upload-Length/Type-Header sind optional und der Content-Type-Header ist nur erforderlich, wenn ich Metadaten sende. – ChristianFigueroa

+0

Die andere war inhaltlich lang. Nicht sicher, ob es das Problem ist, nur alle Möglichkeiten auszuschließen. Versuchen Sie eine andere Operation für die ID, z. B. files.get, um die ID zu überprüfen. – pinoyyid

Antwort

0

Es stellte sich heraus, dass ich versuchte, das Falsche zu tun. Ich wollte aktualisieren eine Datei, nicht hochladen eins. Anstatt "PUT" zu verwenden, sollte ich "PATCH" wie erklärt here verwendet haben. Dies ergab eine 200 Antwort mit dem Header Location, um die tatsächliche Änderung vorzunehmen.