5

Wysyłam żądanie w interfejsie API Dysku Google w wersji 3. Mam obraz Base64. Mam ten kod,Nie można otworzyć przesłanego pliku na Dysku Google przy użyciu interfejsu API

var callback = function(ret, raw) { 
    var obj = $.parseJSON(raw); 
    self.uploadUrl = obj.gapiRequest["data"]["headers"]["location"]; 
    const boundary = '-------314159265358979323846'; 
     const delimiter = "\r\n--" + boundary + "\r\n"; 
     const close_delim = "\r\n--" + boundary + "--"; 

     var reader = new FileReader(); 
     reader.readAsBinaryString(data); 
     reader.onload = function(e) { 
     console.log(reader.result); 
     var contentType = data.type || 'application/octet-stream'; 
     var metadata = { 
      'name': data.name, 
      'mimeType': contentType 
     }; 

     var base64Data = btoa(reader.result); 
     var multipartRequestBody = reader.result; 
     console.log(self.uploadUrl); 
     var request = gapi.client.request({ 
      'path': self.uploadUrl.replace('https://www.googleapis.com', ''), 
      'method': 'PUT', 
      'headers': { 
       'Authorization': 'Bearer ' + self.state.token, 'Content-Length': data.size, 'Content-Type': data.type 
      }, 
      'body': multipartRequestBody}); 
      var callback2 = function(file) { 
      console.log(file) 
      }; 
     request.execute(callback2); 
     } 

    }; 

Z tego wniosek, że console.log tę wiadomość: Object {kind: "drive#file", id: "0B0jyCEQS7DFib19iX2FLYm1yR28", name: "MyFileTitle", mimeType: "image/jpeg"}

Więc zakładając tu, że pomyślnie przesłany plik. Ale gdy sprawdzę plik na Dysku Google, nie mogę go otworzyć. Brak również podglądu pliku. Pobrałem plik, nadal nie mogę go otworzyć. Co tu jest nie tak? ktoś może mi pomóc?

To jest nagłówek odpowiedzi,

Request URL:https://content.googleapis.com/upload/drive/v3/files?uploadType=resumable&upload_id=AEnB2UoIhN3QtsUc1qLW5N_3yG-NOyl9Nm-maYY7T5X4dQbMK_hxu9M-E9L1247jeLEtRQJd8w8IA_GH_6HSWbNrFnocfmt31-oA0iXXHTcZE7k2aIIAvHQ 
Request Method:PUT 
Status Code:200 
Remote Address:216.58.197.170:443 

to mój nagłówek żądania,

Authorization:Bearer <MY_TOKEN> 
Content-Type:image/jpeg 
Origin:https://content.googleapis.com 
X-Requested-With:XMLHttpRequest 

uploadType:resumable 
upload_id:AEnB2UoIhN3QtsUc1qLW5N_3yG-NOyl9Nm-maYY7T5X4dQbMK_hxu9M-E9L1247jeLEtRQJd8w8IA_GH_6HSWbNrFnocfmt31-oA0iXXHTcZE7k2aIIAvHQ 

Żądanie ładowność jest coś takiego,

ÿØÿàJFIFHHÿÛC  ... 

nadal nie można otworzyć plik.

To jest stworzenie pliku,

submitForm(e){ 
e.preventDefault(); 
var data = this.refs.file.files[0]; 
var self = this; 
var metadata = { 
    'Content-Length': data.size, 
    'name': data.name 
}; 

var contentType = data.type; 
var multipartRequestBody = JSON.stringify(metadata); 
var request = gapi.client.request({ 
    'path': '/upload/drive/v3/files', 
     'method': 'POST', 
    'params': {'uploadType': 'resumable'}, 
    'headers': { 
      'Authorization': 'Bearer ' + self.state.token, 'Content-Type': 'application/json; charset=UTF-8', 'X-Upload-Content-Type': data.type, 'X-Upload-Content-Length': data.size 
     }, 
    'body': multipartRequestBody}); 

var callback = ... 

request.execute(callback); 
} 

Powyższy kod jest stworzenie pliku. Dodałem go, ponieważ być może problem leży w tej części.

+0

aby wyjaśnić, plik jest na Dysku Google, ale nie możesz otworzyć jego zawartości? Kiedy ją pobierasz, jaki jest jej rozmiar i jak ten rozmiar ma się do oryginalnego obrazu? Czy próbowałeś sprawdzić pobieranie za pomocą edytora lub edytora szesnastkowego, aby zobaczyć, co w nim jest? – pinoyyid

+0

Plik zawiera tekst treści żądania wieloczęściowego. – JMA

+0

W swoim starym kodzie przed zmianą, czy możesz spróbować zmienić "BASE64" na "base64" jako demo w [tym wątku] (http://stackoverflow.com/questions/11923927/upload-a-file-to-google -drive-api-using-html5)? – noogui

Odpowiedz

0

Object {rodzaju: "drive # file" id "0B0jyCEQS7DFib19iX2FLYm1yR28", name: "MyFileTitle" mimeType: "image/jpeg"}

Jesteś przesyłając plik typu image/jpeg ale nazwa to MyFileTitle. Myślę, że wprowadzasz w błąd, że nie można otworzyć pliku, jeśli nie wie, co to jest.

Spróbuj zmienić na MyFileTitle.jpg.