具体代码
生成一个Button控件。 位置:
res/layout/content_main.xml
内容:
<Button
style="?android:attr/buttonStyleSmall"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/multipart_upload"
android:id="@+id/multipart_upload" />
点击上传,选择要上传的文件。 函数实现片段:
Button multipart_upload = (Button) findViewById(R.id.multipart_upload);
multipart_upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//为了简单化,这里只会同时运行一个断点上传的任务
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_PAUSEABLEUPLOAD_IMAGE);
}
}
);
点击上传,继续时的断点续传。函数实现片段:
点击上传:
//这里调用SDK的分片上传接口来上传
task = ossService.asyncMultiPartUpload(objectName, picturePath, getMultiPartCallback().addCallback(new Runnable() {
@Override
public void run() {
pauseTaskStatus = TASK_NONE;
multipart_resume.setEnabled(false);
multipart_pause.setEnabled(false);
task = null;
}
}}, new ProgressCallbackFactory<PauseableUploadRequest>().get());
底层对SDK的封装逻辑,可以看到是在multiPartUploadManager中的asyncUpload实现的断点续传上传
//断点上传,返回的task可以用来暂停任务
public PauseableUploadTask asyncMultiPartUpload(String object,
String localFile,
@NonNull final OSSCompletedCallback<PauseableUploadRequest, PauseableUploadResult> userCallback,
final OSSProgressCallback<PauseableUploadRequest> userProgressCallback) {
if (object.equals("")) {
Log.w("AsyncMultiPartUpload", "ObjectNull");
return null;
}
File file = new File(localFile);
if (!file.exists()) {
Log.w("AsyncMultiPartUpload", "FileNotExist");
Log.w("LocalFile", localFile);
return null;
}
Log.d("MultiPartUpload", localFile);
PauseableUploadTask task = multiPartUploadManager.asyncUpload(object, localFile, userCallback, userProgressCallback);
return task;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。