注意点:

方案一中:map.put(“files\”; filename=\”” + file.getName(), requestBody);

方案二中:builder.addFormDataPart(“files”, file.getName(), imageBody);

需与服务器一制,如:Content-Disposition: form-data; name=”files”; filename=”1.jpg”)

方案一:

@Multipart

@POST("upload/v1/images")

Observable> uploadImages(@Header("token") String token, @Part("appkey") RequestBody appkey, @Part("sign") RequestBody sign,

@PartMap() Mapmap);

/**

* 上传

* @param compressFile 需要上传的文件

*/

private void upload(ListcompressFile) {

LogUtil.e(TAG, "uploadImages: 开始上传...");

//多张图片

Mapmap = new HashMap<>();

if (compressFile != null && !compressFile.isEmpty()) {

for (int i = 0; i < compressFile.size(); i++) {

File file = compressFile.get(i);

LogUtil.e(TAG, "upload: path: " + file.getAbsolutePath());

RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);

map.put("files\"; filename=\"" + file.getName(), requestBody);

}

}

RequestBody appkey = RequestBody.create(null, Api.APPKEY);

RequestBody sign = RequestBody.create(null, Api.SIGN);

mApiWrapper.uploadImages(appkey, sign, map)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Observer() {

@Override

public void onSubscribe(@NonNull Disposable d) {

}

@Override

public void onNext(@NonNull Object t) {

LogUtil.e(TAG, "uploadImages: 上传成功");

}

@Override

public void onError(@NonNull Throwable e) {

}

@Override

public void onComplete() {

}

});

}

方案二:

@Multipart

@POST("upload/v1/images")

Observable> uploadImages1(@Header("token") String token, @Part ListpartList);

/**

* 上传

* @param compressFile 需要上传的文件

*/

private void upload(ListcompressFile) {

LogUtil.e(TAG, "uploadImages: 开始上传...");

//多张图片

MultipartBody.Builder builder = new MultipartBody.Builder()

.setType(MultipartBody.FORM)//表单类型

.addFormDataPart("appkey", Api.APPKEY)

.addFormDataPart("sign", Api.SIGN);

for (int i = 0; i < compressFile.size(); i++) {

File file = compressFile.get(i);

RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);

builder.addFormDataPart("files", file.getName(), imageBody);

}

Listparts = builder.build().parts();

mApiWrapper.uploadImages(parts)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Observer() {

@Override

public void onSubscribe(@NonNull Disposable d) {

}

@Override

public void onNext(@NonNull Object t) {

LogUtil.e(TAG, "uploadImages: 上传成功");

}

@Override

public void onError(@NonNull Throwable e) {

}

@Override

public void onComplete() {

}

});

java多张图片上传安卓,Android Rxjava+Retrofit2 多图片+文字上传相关推荐

  1. android novate乱码,Android RxJava+Retrofit2+RxBinding

    Android RxJava+Retrofit2+RxBinding 本文原创,转载请注明出处.欢迎关注我的 简书. 安利一波我写的开发框架:MyScFrame喜欢的话就给个Star 前言: 之前写了 ...

  2. java 美发管理系统_基于安卓Android潮流美发系统APP设计(MySQL)

    基于安卓Android潮流美发系统APP设计(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文16000字,程序代码,MySQL数据库) 本应用主要用于对手机上网用户,在线预约 ...

  3. Java实现旅游app_基于安卓Android平台的旅游系统APP的设计(Eclipse,MySQL)

    基于安卓Android平台的旅游系统APP的设计(Eclipse,MySQL)(任务书,开题报告,论文15700字,程序代码) 摘  要 随着手机使用的普及,人们获取与保存信息的方式已经发生了激动人心 ...

  4. java人体识别_基于安卓Android的人体动作行为识别系统APP设计(Android studio)

    基于安卓Android的人体动作行为识别系统APP设计(Android studio)(论文12000字,程序代码) 摘要:Android手机已经成为我们大部分人日常生活中不可或缺的一部分,而且其功能 ...

  5. 手机如何能看java文件管理器_基于安卓Android的手机文件管理器的设计(AndroidStudio)...

    基于安卓Android的手机文件管理器的设计(AndroidStudio)(论文13000字,程序代码) 摘要:本文的目标是设计开发出一款Android手机文件管理器,首先介绍了开发工具和开发语言的来 ...

  6. php上传文件失败的原因,PHP图片文件上传失败的原因

    PHP中调用move_upload_file函数时提示上传失败 form.html如下: 文件上传 文件名: upload_file.php如下: //允许上传的图片后缀 $allowedExts = ...

  7. php图片批量上传插件下载,jQuery的多图片批量上传插件

    jQuery的多图片批量上传插件 js代码 $(function(){ //上传图片 var $tgaUpload = $('#goodsUpload').diyUpload({ url:'uploa ...

  8. android img 制作工具,图片文字制作软件下载

    文字图片制作软件app是一款强大的手机图文制作工具,内置丰富的背景主题,界面精美,操作轻松,支持表情插入,可以让你的图文更加精彩耐看,需要的朋友快来下载吧! 文字图片制作器app介绍 本应用可以快速让 ...

  9. Android集成百度OCR图片文字识别——总结

    近期由于工作内容的需要,我要给项目集成一个图片文字识别功能,据说百度的不错,所以今天写一个关于百度OCR的集成总结,以便以后再次使用不用去看官方文档. 首先肯定是要在百度管理平台注册账号并登录,然后照 ...

最新文章

  1. TensorFlow基本使用
  2. PHP之提取多维数组指定列的方法
  3. 路由怎么定位到当前页面的组件_Angular 重载当前路由
  4. JAVA多线程学习(一)
  5. JAVA随机存储_java-如何将随机整数存储到类的实例中
  6. 搭建struts2框架
  7. 类加载器ClassLoader
  8. 人工智能系统Google开源的TensorFlow官方文档中文版
  9. Java导出Excel(自定义格式)
  10. magic4升级鸿蒙系统,Magic UI 4.0将于9月中旬内测招募 后续可升鸿蒙系统
  11. Java实现简单电子邮件的发送
  12. threejs+angular 实现面积测量
  13. 电脑C盘满了怎么办?教您3招快速释放C盘空间
  14. android 里面的颜色的RGB
  15. mysql workbench6.1 教程_MySQL Workbench 使用教程 (一)
  16. 文件系统目录结构(Linux)
  17. 合并报表编制采用的理论_母公司在实际编制合并财务报表时,可以任意选择运用一种合并财务报表的合并理论。( )_搜题易...
  18. 【数据库概论】关系代数(传统集合运算和专门关系运算)
  19. 场景共同体:浪潮存储的生态突围秘诀
  20. 典范杜希奇与机器人_典范英语7_16 杜希奇与机器人

热门文章

  1. js下的keyCode.
  2. Ubuntu默认不进入图形界面
  3. crf与bitrate对照表
  4. 大力智能台灯与飞利浦台灯 智能调光功能体验
  5. 机械零点、MAM 文件 、 EMT标定原理
  6. 【pyqt5学习】——graphicView显示opencv图像
  7. html期末网页设计,求网页设计的期末作业一份 HTML的
  8. 卸载失败_Windows 10可能的新功能-自动卸载失败的补丁更新
  9. 打印一个整数二进制表示中所有的奇数位和偶数位
  10. php中的point用法,php strnatcmp()函数的用法总结