博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android架构】基于MVP模式的Retrofit2+RXjava封装之文件上传(三)
阅读量:6457 次
发布时间:2019-06-23

本文共 3667 字,大约阅读时间需要 12 分钟。

最近手头事比较多,抽个空把之前系列也补充一下。

先回顾下之前的

今天要说的是文件上传

1.单图上传

首先ApiServer,要使用Multipart 注解

//上传图片(私有接口)  @POST("index.php/PrivateApi/Goods/uploadPic")  @Multipart  Observable
> upLoadImg(@Part MultipartBody.Part parts);

然后是Presenter

public void upLoadImg(String path) {        File file = new File(path);        RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);        MultipartBody.Part filePart = MultipartBody.Part.createFormData("headimg", file.getName(), requestFile);        addDisposable(apiServer.upLoadImg(filePart), new BaseObserver
>(baseView, true) { @Override public void onSuccess(BaseListModel
o) { baseView.onUpLoadSucc(o.getData()); } @Override public void onError(String msg) { baseView.showError(msg); } }); }

成功后做个提示就好

2.多图上传

ApiServer

@POST("index.php/PrivateApi/Goods/uploadPic")    @Multipart    Observable
> upLoadImg(@Part MultipartBody.Part[] parts);

Presenter

public void upLoadImg(ArrayList
media) { if (media == null) { return; } MultipartBody.Part[] parts = new MultipartBody.Part[media.size()]; int cnt = 0; for (String m : media) { File file = new File(m); RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); MultipartBody.Part filePart = MultipartBody.Part.createFormData("headimg[]", file.getName(), requestFile); parts[cnt] = filePart; cnt++; } addDisposable(apiServer.upLoadImg(parts), new BaseObserver
>(baseView, true) { @Override public void onSuccess(BaseListModel
o) { baseView.onUpLoadSucc(o.getData()); } @Override public void onError(String msg) { baseView.showError(msg); } }); }

3.文件和普通参数混合

ApiServer

//上传图片(私有接口)    @POST("index.php/PrivateApi/Goods/uploadPic")    @Multipart    Observable
> upLoadImg(@Part MultipartBody.Part[] parts, @Part("APP_KEY") RequestBody APP_KEY, @Part("APP_TOKEN") RequestBody APP_TOKEN);

Presenter

public void upLoadImg(ArrayList
media) { if (media == null) { return; } MultipartBody.Part[] parts = new MultipartBody.Part[media.size()]; int cnt = 0; for (String m : media) { File file = new File(m); RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); MultipartBody.Part filePart = MultipartBody.Part.createFormData("headimg[]", file.getName(), requestFile); parts[cnt] = filePart; cnt++; } RequestBody appkey = RequestBody.create(MediaType.parse("multipart/form-data"), AppConstant.APP_KEY); RequestBody apptoken = RequestBody.create(MediaType.parse("multipart/form-data"), UserImpl.getAppToken());// addDisposable(apiServer.upLoadImg(parts, appkey, apptoken), new BaseObserver
>(baseView, true) { @Override public void onSuccess(BaseListModel
o) { baseView.onUpLoadSucc(o.getData()); } @Override public void onError(String msg) { baseView.showError(msg); } }); }

至此,使用Retrofit文件上传暂时告一段落。

你的认可,是我坚持更新博客的动力,如果觉得有用,就请点个赞,谢谢

转载地址:http://glizo.baihongyu.com/

你可能感兴趣的文章
linux 上面配置apache2的虚拟目录
查看>>
String字符串的截取
查看>>
DynamoDB Local for Desktop Development
查看>>
laravel 使用QQ邮箱发送邮件
查看>>
用javascript验证哥德巴赫猜想
查看>>
Shell编程-环境变量配置文件
查看>>
[Unity3d]DrawCall优化手记
查看>>
Struts2和Spring MVC的区别
查看>>
理解Javascript参数中的arguments对象
查看>>
p2:千行代码入门python
查看>>
bzoj1106[POI2007]立方体大作战tet*
查看>>
spring boot configuration annotation processor not found in classpath问题解决
查看>>
【转】正则基础之——神奇的转义
查看>>
团队项目测试报告与用户反馈
查看>>
对软件工程课程的期望
查看>>
Mysql中文字符串提取datetime
查看>>
IOS 与ANDROID框架及应用开发模式对比一
查看>>
由中序遍历和后序遍历求前序遍历
查看>>
我学习参考的网址
查看>>
easyui的combotree以及tree,c#后台异步加载的详细介绍
查看>>