我正在创建一个来自该用户的小应用程序可以将他的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();
还产生相同的错误。
同样的下载情况也是.....
请给我一些解决方案......为此...
答案 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的可恢复上传示例。