【Android架构】基于MVP模式的Retrofit2+RXjava封装之文件上传(三)
最近手头事比较多,抽个空把之前系列也补充一下。
先回顾下之前的
【Android架构】基于MVP模式的Retrofit2+RXjava封装(一)
【Android架构】基于MVP模式的Retrofit2+RXjava封装之文件下载(二)
今天要说的是文件上传
1.单图上传
首先ApiServer,要使用Multipart 注解
//上传图片(私有接口) @POST("index.php/PrivateApi/Goods/uploadPic") @Multipart Observable<BaseListModel<String>> 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<BaseListModel<String>>(baseView, true) { @Override public void onSuccess(BaseListModel<String> o) { baseView.onUpLoadSucc(o.getData()); } @Override public void onError(String msg) { baseView.showError(msg); } }); }
成功后做个提示就好
2.多图上传
ApiServer
@POST("index.php/PrivateApi/Goods/uploadPic") @Multipart Observable<BaseListModel<String>> upLoadImg(@Part MultipartBody.Part[] parts);
Presenter
public void upLoadImg(ArrayList<String> 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<BaseListModel<String>>(baseView, true) { @Override public void onSuccess(BaseListModel<String> o) { baseView.onUpLoadSucc(o.getData()); } @Override public void onError(String msg) { baseView.showError(msg); } }); }
3.文件和普通参数混合
ApiServer
//上传图片(私有接口) @POST("index.php/PrivateApi/Goods/uploadPic") @Multipart Observable<BaseListModel<String>> upLoadImg(@Part MultipartBody.Part[] parts, @Part("APP_KEY") RequestBody APP_KEY, @Part("APP_TOKEN") RequestBody APP_TOKEN);
Presenter
public void upLoadImg(ArrayList<String> 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<BaseListModel<String>>(baseView, true) { @Override public void onSuccess(BaseListModel<String> o) { baseView.onUpLoadSucc(o.getData()); } @Override public void onError(String msg) { baseView.showError(msg); } }); }
至此,使用Retrofit文件上传暂时告一段落。
你的认可,是我坚持更新博客的动力,如果觉得有用,就请点个赞,谢谢
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【Android架构】基于MVP模式的Retrofit2+RXjava封装之文件下载(二)
上篇中我们介绍了基于MVP的Retrofit2+RXjava封装,还没有看的点击这里,这一篇我们来说说文件下载的实现。 首先,我们先在ApiServer定义好调用的接口 @GET Observable<ResponseBody> downloadFile(@Url String fileUrl); 接着定义一个接口,下载成功后用来回调 public interface FileView extends BaseView { void onSuccess(File file); } 接着是Observer,建议与处理普通接口的Observer区分处理 public abstract class FileObsever extends BaseObserver<ResponseBody> { private String path; public FileObsever(BaseView view, String path) { super(view); this.path = path; } @Override protected void onStart() {...
- 下一篇
阿里云获得SAP HANA 2T实例公共云认证
2018年7月,阿里云正式通过SAP HANA 2T实例的公共云平台认证,成为国内首批通过该规格实例认证的公共云服务提供商之一。 随着企业数字化转型深入,企业业务高速增长,业务种类持续丰富,企业的业务数据也像滚雪球般越滚越多。SAP HANA实例的最大规格从1T提升至2T,可更快速处理大规模企业数据,提升企业决策效率,快速响应瞬息万变的市场需求。据了解,今年内阿里云或将推出4T内存的更大规格SAP HANA 实例。 SAP HANA是目前业内最具影响力的内存数据库产品之一。通过实现大数据量的全内存处理,SAP HANA真正实现了数据的“实时”处理和业务的“实时”分析。 SAP是全球领先的企业应用软件公司,在全球拥有38万家各种规模的客户,其中包括92%的《福布斯》全球2000强企业。2016年4月,阿里云与SAP达成战略合作。2017年
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启