【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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程