我正在创建一个小应用程序,该用户可以从 Android 设备将他的 MS office 文件上传到他注册的邮件 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
我尝试了可恢复上传,但插入方法没有参数来设置它。 如果我将上传类型设置为可恢复
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();
它也会产生同样的错误。
同理,下载也......
请给我一些解决方案...为此...
最佳答案
不要对大于 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 的可续传上传示例.
关于android - 将大文件上传下载到 Google 云端硬盘时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15970423/