我正在测试Android的驱动器API,以便上传一个文件,该文件可以显示上传的进度,并能够在失败时恢复上传(文件大小>30 MB)
与以下问题:上传下载的大文件到谷歌驱动器给错误,上传进度监听器没有激发(谷歌驱动器API)我能够得到上传进度,他们提到那些是可恢复的上传。但是,我没有看到任何寻找上传错误和恢复逻辑的代码,因此,如果我杀死应用程序并“恢复”上传,它只是从头开始。
public class DriveScreen extends BaseDriveActivity {
private Drive service;
private Context context;
@Override
public void onConnected(Bundle connectionHint) {
super.onConnected(connectionHint);
context = this;
//https://stackoverflow.com/questions/17429798/usingoauth2-deprecated
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(this, Arrays.asList(DriveScopes.DRIVE_FILE));
credential.setSelectedAccountName("accountNameHERE");
service = new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build();
UploadFile();
}
public void UploadFile() {
AsyncTask<Void, Long, String> task = new AsyncTask<Void, Long, String>() {
java.io.File fileContent;
FileContent mediaContent;
com.google.api.services.drive.model.File body;
com.google.api.services.drive.model.File file;
private ProgressDialog mDialog;
long mFileLen;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
mDialog = new ProgressDialog(context);
mDialog.setMax(100);
mDialog.setMessage("Uploading ");
mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mDialog.setProgress(0);
mDialog.setButton("Cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
});
mDialog.show();
}
class FileUploadProgressListener implements MediaHttpUploaderProgressListener {
@Override
public void progressChanged(MediaHttpUploader uploader) throws IOException {
Log.d("Percent ", String.valueOf(uploader.getProgress()));
switch (uploader.getUploadState()) {
case INITIATION_STARTED:
System.out.println("Initiation Started");
break;
case INITIATION_COMPLETE:
System.out.println("Initiation Completed");
break;
case MEDIA_IN_PROGRESS:
System.out.println("Upload in progress");
System.out.println("Upload percentage: " + uploader.getProgress());
mDialog.setProgress((int) (uploader.getProgress()*100));
break;
case MEDIA_COMPLETE:
System.out.println("Upload Completed!");
break;
case NOT_STARTED:
System.out.println("Upload Not Started!");
break;
}
}
}
@Override
protected String doInBackground(Void... arg0) {
try {
File folder = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES
);
File UPLOAD_FILE = new File(folder, "filePathHERE");
fileContent = new File(folder, "filePathHERE");
mFileLen = fileContent.length();
InputStreamContent mediaContent2 = new InputStreamContent("application/zip", new FileInputStream(UPLOAD_FILE));
mediaContent2.setLength(UPLOAD_FILE.length());
body = new com.google.api.services.drive.model.File();
body.setTitle(fileContent.getName());
body.setMimeType("application/zip");
//String parentId = null;
//int x = Files.List.setQ("mimeType = 'application/vnd.google-apps.folder' and title = 'ShareHim'");
//body.setParents(Arrays.asList(new ParentReference().setId(uploadFile.getFileHostFolderId())));
Files.Insert mInsert = service.files().insert(body, mediaContent2);
if(mFileLen > 5 * 1024 * 1024)
{
MediaHttpUploader uploader = mInsert.getMediaHttpUploader();
uploader.setDirectUploadEnabled(false);
uploader.setChunkSize(MediaHttpUploader.MINIMUM_CHUNK_SIZE);
uploader.setProgressListener(new FileUploadProgressListener());
file = mInsert.execute();
if (file != null) {
}
}
else {
mInsert.execute();
}
} catch (UserRecoverableAuthIOException e) {
System.out.println("login error");
Log.d("Error", "not login " + e);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
mDialog.dismiss();
};
};
task.execute();
}
}
看起来您使用的是Java REST-ful API。如果您使用特定于Android的API,这一切都是为您处理的。只要交出文件,API就会做适当的可恢复上传。请参见创建文件。
有人能告诉我如何在dropwizard 1.2.6中实现可恢复的文件上传吗?因此,如果用户试图上传一个大文件(4-5 GB),如果出现网络故障或浏览器错误关闭,那么用户将能够从中断的地方恢复该过程。
使用 fetch 方法来上传文件相当容易。 连接断开后如何恢复上传?这里没有对此的内建选项,但是我们有实现它的一些方式。 对于大文件(如果我们可能需要恢复),可恢复的上传应该带有上传进度提示。由于 fetch 不允许跟踪上传进度,我们将会使用 XMLHttpRequest。 不太实用的进度事件 要恢复上传,我们需要知道在连接断开前已经上传了多少。 我们有 xhr.upload.onprogress
我试图在vue js中构建镜像上传器,我希望它可以恢复上传,我从浏览器直接将请求发送到云存储服务器(例如,不使用php作为发送上传请求的中间件) 但是文档说我必须有访问令牌才能获取会话url,我稍后将使用它来上传图像,如何使用JavaScript获取此访问令牌,谷歌云没有javascript库,但在我不能用于浏览器使用的节点js中 邮递https://www.googleapis.com/uplo
我试图通过删除“内部”恢复func来实现这一点,但在这种情况下,“主”恢复不能恢复“内部”goroutine内部的恐慌。 操场 我试图听从@momer的建议,通过通道发送错误并在主goroutine中处理它,而不是试图制造恐慌:
我正在尝试使用Gmail的可恢复选项将附件上传到电子邮件。文件参考:https://developers.google.com/gmail/api/guides/uploads#resumable. 目前,我可以用可恢复的URI发送电子邮件,但没有附件(使用邮递员)。文档没有提供非常清楚的请求应该是什么样子的例子,在搜索互联网后,似乎也没有很多例子。 我的要求分为两部分: > 正文是64位编码字符
问题内容: 首先,很抱歉,这是一个太愚蠢的问题……这是我第一次尝试使用此脚本中涉及的任何技术(Python,驱动器api,oauth 2.0等)。我发誓我一直在搜索并尝试这个问题大约一个星期,然后再发布问题。呵呵呵 我正在尝试使用google-api-python-client上传仅在终端机Linux Debian上的大文件(3.5GiB)。我已经成功上传了小文件,但是当我尝试上传大文件时,上传开