2017-04-14 108 views
0

當試圖從Drive導出文件爲PDF流(來自gdoc)時,有時會得到一個空的InputStream字節數組(它看起來像是發生在大文件上,但是我無法確認!):Google Drive API在下載/導出文件時獲取空的ByteArray

InputStream mediaContent = service.files().export(fileId, mimetype).executeMediaAsInputStream(); 
if(!(mediaContent.available()>0)) { 
    throw new IOException("Media content empty, bytes expected"); 
} 

不引發任何異常。我看不到文檔中的任何指定限制(https://developers.google.com/drive/v3/web/manage-downloads)。有沒有解決這個問題的方法?這是一個已知的問題嗎?

驅動API:Java客戶端版本V3-rev69-1.22.0

編輯

通過谷歌的OAuth 2.0遊樂場通常要求的作品,但有時會失敗,以及(由於沒有我的意思它返回http代碼200但是一個空的內容!)。 當使用斷點續傳媒體下載,我總是得到一個空的InputStream字節數組(1MB的塊):

Drive.Files.Export request = service.files().export(fileId, mimetype); 
request.getMediaHttpDownloader().setProgressListener(new CustomProgressListener()); 
request.getMediaHttpDownloader().setChunkSize(Constants.CHUNK_SIZE); 
request.getMediaHttpDownloader().setDirectDownloadEnabled(false); 
InputStream mediaContent = request.executeMediaAsInputStream(); 

但它不拋出任何異常(返回碼200以及)。有解決方案嗎?

+0

該文件是否大於5MB? – noogui

+0

嗨noogui,謝謝你的回覆。由於它是Google文檔,因此Google雲端硬盤中沒有指定大小。如果我通過Drive UI將它下載爲PDF,我會得到一個382 Ko的文件。 –

回答

1

如果有人遇到同樣的問題:我創建了Google Cloud Support的憑單,他們發現儘管有200個回覆代碼,轉換仍未成功完成。他們還提到,由於文檔非常大(轉換無法及時完成),超時轉換失敗。因此,他們建議將其轉換爲零件之前將文檔拆分爲零件的解決方法,直到他們修復了錯誤。

編輯

最後更新從谷歌支持:

工程師們仍然在調查這一問題,有一個分辨率沒有ETA並沒有顯著取得進展。

+0

感謝您與社區分享您的發現和支持票的結果。有沒有公​​開的問題,其他人可以按照獲取更新?如果是這樣,你可以在你的答案中發佈鏈接嗎? – Nicholas

+0

嗨尼古拉斯。據我所知,現在還沒有公共問題。如果Google創建一個,我會更新此主題。 –

相關問題