上传将大尺寸文件下载到Google云端硬盘会出错

时间:2013-04-12 11:40:09

标签: android http google-drive-api

我正在创建一个来自该用户的小应用程序可以将他的MS office文件从Android设备上传到他的注册邮件ID G_Drive帐户。 并将该文件导出为PDF格式。

为此我从链接下面的帮助表中获取:

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 upload,但insert方法没有参数来设置它。 如果我将上传类型设置为可以使用

恢复
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 个答案:

答案 0 :(得分:1)

不要对大于5MB的文件使用基本上传。

您需要在开始上传之前设置媒体内容的内容长度。否则,谷歌终端可能无法识别上传完成,并等待套接字超时。

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的可恢复上传示例。