开发者社区> 问答> 正文

如何实现上传文件(二)?


具体代码
生成一个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;
}


展开
收起
青衫无名 2017-10-18 10:30:50 1434 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载