我在将 mp4 文件上传到谷歌驱动器时遇到问题。我正在使用可恢复上传。块大小设置为最小大小的多重性(取决于要上传的文件大小以使进度条工作)。小文件的上传几乎总是有效。但是当文件大约 50 MB 时,上传经常失败。EOFException
上传一开始有异常或Unexpected end of stream
上传中间某处出现异常“”。经过多次测试,看起来行为是随机的,有时有效,有时无效。我正在使用通过 eclipse 插件下载的最新 Google Drive API。我正在使用带有“ AccountPicker
”活动的默认授权。我在谷歌搜索上看到了很多提示,但没有解决问题。例如设置“ System.setProperty("http.keepAlive", "false")
”。这是我的上传方法:
try{
final java.io.File fileContent = new java.io.File(path);
// get MIME type from name:
String mime = getMimeType(fileContent.getAbsolutePath());
FileContent mediaContent = new FileContent(mime, fileContent);
// File's meta-data.
File body = new File();
body.setTitle(fileContent.getName());
body.setMimeType(mime);
// set parent folder:
body.setParents(Arrays.asList(new ParentReference().setId(parentId)));
Files f = mService.files();
Insert i = f.insert(body, mediaContent);
// configure MediaUploader:
MediaHttpUploader uploader = i.getMediaHttpUploader();
uploader.setDirectUploadEnabled(false);
uploader.setProgressListener(new FileUploadProgressListener());
int chunkSize = getDataChunkSize(fileContent.length());
uploader.setChunkSize(chunkSize);
File file = i.execute();
// upload was interrupted
if (Thread.interrupted() == true) {
// file upload was interrupted, currently no action here.
}
else if (file != null) {
// upload finished with success.
}
else if (file == null) {
// upload failed.
}
}
catch (Exception e) {
// upload failed:
}
我注意到“ EOFException
”主要是在长时间不使用谷歌驱动器并完成上传请求时生成的。例如,当完成文件夹列表并在上传完成后立即“ EOFException
”不会生成。我在每个活动时间生命周期中只创建一次凭证对象和驱动服务对象。也许需要一些刷新?你能帮忙吗?提前致谢。