2014-04-12 85 views
2

我試圖使用Jquery AJAX POST請求將Base64編碼圖像上傳到谷歌驅動器。 IT將數據上載到Google驅動器,但在下載文件後,它不會在Google Drive查看器/上顯示圖像。使用javascript將Google Base64圖像上傳到Google驅動器

請求調用通過JSON響應獲取成功消息。

以下是代碼的片段:[的imageData是Base64編碼串]

$.ajax({ 
     type: 'POST', 
     url: 'https://www.googleapis.com/upload/drive/v2/files?uploadType=media', 
     headers: { 
      'Authorization': 'Bearer ' + access_token, 
      'Content-Type': 'image/jpeg', 
      'Content-Length': imageData.length, // imageData is Base64 encoded string 
     }, 
     data: imageData // imageData is Base64 encoded string 
     }).done(function (result, textStatus, jqXHR) { 
       console.log('success : ' + textStatus); 
       console.log(JSON.stringify(result)); 

      }).fail(function (jqXHR, textStatus, errorThrown) { 
       console.log('fail : ' + textStatus + ' desc : ' + SON.stringify(jqXHR)); 
      }); 

預先感謝。

  • Vishrut
+0

@ Vishrut - 沙阿你有沒有解決這個問題,或者得到它的工作?我有同樣的問題/問題。謝謝。 – tamak

+1

從用戶http://stackoverflow.com/users/1915075/arvigeus:嘗試數據:'imageData.replace(/^data:。*; base64,/,「」)''。我不能確定這是一個真正的答案,但是與不同類型的項目有類似的問題,並且這解決了它。沒有答案的答案。 – reporter

+0

[上傳到Google雲端硬盤 - 如何使用base64編碼的圖片或圖片路徑]的可能重複(https://stackoverflow.com/questions/33743100/uploading-to-google-drive-how-to-use-一個-base64編碼圖像或 - 一個圖像路徑) – Paul

回答

0

這上傳數據,但並不需要上傳到顯示驅動器的圖片數據。通過上傳base64格式,您已將大字符串上傳到Google Drive,而不是二進制映像文件。 base64編碼包含與原始文件不同的字節,並且在驅動器中生成的文件比關聯的二進制文件大50%。

如果您下載base64文件,並將其轉換爲圖像數據url以顯示它,則它將顯示正常。但是,您將無法在Google Drive Web UI中看到它,因爲它明顯存儲了base64數據,而不是將其轉換爲二進制文件。 (如2017年11月的)

gapi不BLOB上傳發揮出色,所以也許不是嘗試使用googleapi's cors-upload-sample from githubmy fork as described here

相關問題