2013-04-12 1 views
3

Я создаю небольшое приложение от этого пользователя, которое может загрузить свой файл MS Office на свой зарегистрированный почтовый идентификатор G_Drive на устройстве Android. и экспортировать этот файл в формат PDF.Загрузка Загружаем файл большого размера в Google Drive, давая ошибку

для этого я принимать помощь формы ссылки:

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

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

Я создал приложение, и его работа отлично подходит для небольшого размера файла (< 1Мб), но когда я посылаю большое размер до g_Drive, чем я получаю ниже ошибок:

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

Я пытался за возобновление 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

Не используйте основную загрузку файлов размером более 5 МБ.

Перед началом загрузки необходимо установить длину содержимого медиаконтента. В противном случае вполне вероятно, что конечная точка 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(); 

Существует на самом деле полная возобновляемая образец для загрузки на основе Android на [1].

+0

Добавлено java.io.File tempFile = new java.io.File (DocxFile); InputStreamContent mediaContent = new InputStreamContent ("application/vnd.openxmlformats-officedocument.wordprocessingml.document", новый BufferedInputStream (новый FileInputStream (tempFile))); mediaContent.setLength (tempFile.length()); Вставить insert = service.files(). Insert (body, mediaContent); insert.setConvert (true); insert.getMediaHttpUploader(). SetDirectUploadEnabled (false); insert.getMediaHttpUploader(). SetProgressListener (новый FileUploadProgressListener()); file = insert.execute(); , но его сообщение об ошибке для файла большого размера. –

+1

Немного offtopic, возможно, но уместно в этом вопросе: где в этом коде или в примере, который вы упомянули, обрабатывается «возобновляемая» часть? Все, что я вижу, это вставки, сделанные в кусках, но если кто-то терпит неудачу, нам не придется перезапускать его и начинать все заново? – Rick

Смежные вопросы