2017-03-10 133 views
5

我在Google Drive API版本3中發送請求。 我有一個Base64圖像。 我有這樣的代碼,無法使用API​​在Google雲端硬盤中打開上傳的文件

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); 
     } 

    }; 

這項請求,是我CONSOLE.LOG此消息:Object {kind: "drive#file", id: "0B0jyCEQS7DFib19iX2FLYm1yR28", name: "MyFileTitle", mimeType: "image/jpeg"}

所以我假設在這裏,我成功上傳的文件。但是當我在Google雲端硬盤中檢查文件時,我無法打開它。也沒有該文件的預覽。我下載了該文件,仍然無法打開它。這裏有什麼問題?任何人都可以幫助我?

這是響應頭,

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 

這是我的請求頭,

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 

請求負載是這樣的,

ÿØÿàJFIFHHÿÛC  ... 

仍然無法打開文件。

這是文件的創建,

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); 
} 

上面的代碼是文件的創建。我添加了它,因爲問題出在這一部分。

+0

爲了澄清,該文件存在於Google雲端硬盤中,但無法打開其內容?當你下載它時,它的大小是多少,這個大小與原始圖像相比如何?您是否嘗試過使用編輯器或十六進制編輯器查看下載內容以查看其中的內容? – pinoyyid

+0

該文件具有多部分請求主體的文本。 – JMA

+0

在您更改之前的舊代碼中,您是否可以嘗試將「BASE64」更改爲「base64」,如[本主題]中演示的那樣(http://stackoverflow.com/questions/11923927/upload-a-file-to-google )使用HTML5的A-驅動-API? – noogui

回答

0

對象{樣: 「驅動器#文件」,ID: 「0B0jyCEQS7DFib19iX2FLYm1yR28」,名稱: 「MyFileTitle」,mime類型: 「圖像/ JPEG」}

您上傳image/jpeg類型的文件但名字是MyFileTitle。如果不知道它是什麼,我認爲你很困惑它不能打開一個文件。

嘗試將其更改爲MyFileTitle.jpg

相關問題