3

我正在从该用户创建一个小应用程序,可以将他的 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

我尝试了可恢复上传,但插入方法没有参数来设置它。如果我将上传类型设置为可恢复

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();

而不是它产生相同的错误。

同样的情况与下载也......

请给我一些解决方案...为此...

4

1 回答 1

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

于 2013-04-13T00:06:42.997 回答