2013-04-12 27 views
3

我正在從該用戶創建一個小應用程序,可以將他的MS Office文件上傳到他的已註冊的Android設備的G_Drive帳戶。 並將該文件導出爲PDF格式。正在上傳將大尺寸文件下載到Google Drive給出錯誤

下面的鏈接,我採取的幫助形式:

https://developers.google.com/drive/v2/reference/files/insert#examples

https://developers.google.com/drive/manage-downloads#downloading_google_documents

我創建的應用程序,它的做工精細的小尺寸(< 1MB)的文件,但是當我發送大大小的g_Drive比我下面的錯誤:

java.io.exception Unexpected End of Stream 
java.net.SocketTimeoutException: Read timed out 

我試過Resumable u pload,但插入方法沒有參數來設置它。 如果我設置上傳類型與

service.files().insert(body, mediaContent).set("upload type", "resumable"); 

Insert insertService = service.files().insert(body, mediaContent).setConvert(true); 
insertService.getMediaHttpUploader().setDirectUploadEnabled(false);   insertService.getMediaHttpUploader().setChunkSize(MediaHttpUploader.DEFAULT_CHUNK_SIZE); 
file = insertService.execute(); 

比也是其產生同樣的錯誤斷點續傳。

相同的情況下與下載也.....

,請給我一些解決方案...這個...

回答

1

不要使用基本上傳了超過5MB的文件。

您需要在開始上傳之前設置媒體內容的內容長度。否則,Google端點很可能無法識別上傳的完成情況,並等待套接字超時。

InputStreamContent mediaContent = new InputStreamContent("image/jpeg", new BufferedInputStream(
    new FileInputStream(UPLOAD_FILE))); 
mediaContent.setLength(UPLOAD_FILE.length()); 

Insert insert = drive.files().insert(fileMetadata, mediaContent); 
MediaHttpUploader uploader = insert.getMediaHttpUploader(); 
uploader.setDirectUploadEnabled(false); 
uploader.setProgressListener(new FileUploadProgressListener()); 
insert.execute(); 

實際上有上 [1]一個完整的基於Android的繼續上傳樣本。

+0

I Added java.io.File tempFile = new java.io.File(DocxFile); InputStreamContent = new InputStreamContent(「application/vnd.openxmlformats-officedocument.wordprocessingml.document」,new BufferedInputStream(new FileInputStream(tempFile))); mediaContent.setLength(tempFile.length());插入insert = service.files()。insert(body,mediaContent); insert.setConvert(true); insert.getMediaHttpUploader()。setDirectUploadEnabled(false); insert.getMediaHttpUploader()。setProgressListener(new FileUploadProgressListener()); file = insert.execute(); 但它給大尺寸文件的錯誤。 –

+1

有點偏離主題,但可能與此事有關:在本代碼或您提到的示例中的哪個部分是正在處理的「可恢復」部分?我看到的只是插入塊,但如果失敗了,我們不需要重新啓動並重新開始嗎? – Rick

相關問題