上传单张图片

 @Multipart@POST("invitation/upload")Flowable<BaseResponse> uploadImage(@Part MultipartBody.Part part);

然后进行调用

val file = File(selectList!![i].compressPath)
val requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file)
val body = MultipartBody.Part.createFormData("file", file.name, requestFile)  getApiService().uploadImage(body ).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe()

上传多张图片

@Multipart
@POST("invitation/upload")
Flowable<BaseResponse<UploadApplyInfo>> uploadImages(@Part List<MultipartBody.Part> list);

然后进行调用

val list = ArrayList<MultipartBody.Part>()for(i in 0 until selectList!!.size){val file = File(selectList!![i].compressPath)val requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file)val body = MultipartBody.Part.createFormData("file$i", file.name, requestFile)list.add(body)
}getApiService().uploadImages(list).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe()

上传多张图片(方式二)

@Multipart
@POST("invitation/api/v1/upload/parkingPoint")
Flowable<BaseResponse<UploadApplyInfo>> uploadApplyParkPointImage5(@PartMap Map<String, RequestBody> map);

然后进行调用

val map = HashMap<String, RequestBody>()
for(i in 0 until selectList!!.size){val file = File(selectList!![i].compressPath)val requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file)map["file$i\"; filename=\"" + file.name] = requestFile //注意这里的\",报文中如需要filename,需要进行拼接成,类似于name="file1"; filename="Luban_1556607036831.jpg"的形式
}getApiService().uploadApplyParkPointImage5(map).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe()

这里,上传多张图片,也可以使用
uploadImages(@Part MultipartBody.Part… files),可变参数,但需要提前知道图片个数
uploadImages(@Part MultipartBody.Part file1,@Part MultipartBody.Part file2),固定参数,需要提前知道图片个数

上传单张图片的报文

贴上报文日志以作参考

D/OkHttp: --> POST http://xxxx.xxxx.com/invitation/upload
D/OkHttp: Content-Type: multipart/form-data; boundary=9741fa91-558d-4b71-9117-e44139c9c02c
D/OkHttp: Content-Length: 117843
D/OkHttp: --9741fa91-558d-4b71-9117-e9c0144139cc
D/OkHttp: Content-Disposition: form-data; name="file"; filename="Luban_1556607508304.jpg"
D/OkHttp: Content-Type: multipart/form-data
D/OkHttp: Content-Length: 117616
D/OkHttp: ������JFIF����������������C��.....省略.....
D/OkHttp: �kr*�\�Y5&��d��&��:��D`ȋ���
D/OkHttp: --9741fa91-558d-4b71-9117-e9c0144139cc--
D/OkHttp: --> END POST (117843-byte body)
D/OkHttp: <-- 200 OK http://xxxx.xxxx.com/invitation/upload (186ms)
D/OkHttp: Server: openresty/1.13.6.2
D/OkHttp: Date: Tue, 30 Apr 2019 06:58:31 GMT
D/OkHttp: Content-Type: application/json;charset=UTF-8
D/OkHttp: Content-Length: 113
D/OkHttp: Connection: keep-alive
D/OkHttp: {"success":true,"msg":"上传成功","data":{"imgs":"parkingpoint_img/609c6d62-b76d-47f3-98fc-8663d25bae60.jpg"}}
D/OkHttp: <-- END HTTP (113-byte body)

上传多张图片的报文

贴上报文日志以作参考

D/OkHttp: --> POST http://xxxx.xxxx.com/invitation/upload
D/OkHttp: Content-Type: multipart/form-data; boundary=0a8b3a28-37b9-49be-a23e-e57470f29025
D/OkHttp: Content-Length: 234964
D/OkHttp: --0a8b3a28-37b9-49be-a23e-e590257470f1
D/OkHttp: Content-Disposition: form-data; name="file1"; filename="Luban_1556603633113.jpg"
D/OkHttp: Content-Type: multipart/form-data
D/OkHttp: Content-Length: 116938
D/OkHttp: ������JFIF����������������C��.....省略.....
D/OkHttp: --0a8b3a28-37b9-49be-a23e-e590257470f1
D/OkHttp: Content-Disposition: form-data; name="file2"; filename="Luban_1556603633644.jpg"
D/OkHttp: Content-Type: multipart/form-data
D/OkHttp: Content-Length: 117616
D/OkHttp: ������JFIF����������������C��.....省略.....
D/OkHttp: --0a8b3a28-37b9-49be-a23e-e590257470f1--
D/OkHttp: --> END POST (234964-byte body)
D/OkHttp: <-- 200 OK http://xxxx.xxxx.com/invitation/upload (1129ms)
D/OkHttp: Server: openresty/1.13.6.2
D/OkHttp: Date: Tue, 30 Apr 2019 05:53:57 GMT
D/OkHttp: Content-Type: application/json;charset=UTF-8
D/OkHttp: Content-Length: 113
D/OkHttp: Connection: keep-alive
D/OkHttp: {"success":true,"msg":"上传成功","data":{"imgs":"parkingpoint_img/6bab770d-f017-440a-88e4-bb80593a9a7d.jpg,parkingpoint_img/602fdd4b-e52a-4c98-9068-f12e1de7e55f.jpg"}}
D/OkHttp: <-- END HTTP (113-byte body)

可以看到,上传单张图片和多张图片的区别,就在于请求内容的个数

其他

【Android实战】----基于Retrofit实现多图片/文件、图文上传
Android Retrofit 实现(图文上传)文字(参数)和多张图片一起上传
Retrofit 2.0 超能实践(三),轻松实现多文件/图片上传/Json字符串/表单

Android Retrofit2.0 上传单张图片和多张图片相关推荐

  1. 解决unity 打包在Android 8.0上启动出现黑屏问题(Android权限弹窗问题)

    解决unity 打包在Android 8.0上启动出现黑屏问题 本文链接:https://blog.csdn.net/baidu_34248947/article/details/89377983 我 ...

  2. Android 5.0 上 Failure [INSTALL_FAILED_DUPLICATE_PERMISSION的问题

    今天在新的Android 5.0上调试程序的时候,安装一个程序,出现了Failure [INSTALL_FAILED_DUPLICATE_PERMISSION]的错误,但是在以前的Android4.4 ...

  3. [微信小程序]上传单张和多张图片

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 上传单张图片并展示, <button bindtap="upimg" class=' ...

  4. 微信小程序上传单张和多张图片(附源码)

    上传单张图片并展示: <button bindtap="upimg" class='jia_img' >上传</button> <image src= ...

  5. 教你如何在Android 6.0上创建系统悬浮窗

    郭霖大神的文章:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235949&idx=1&sn=0f7eded ...

  6. 关于 android 6.0 上的 nuplayer 播放时的图像卡顿

    作为一个和 android nuplayer 打了 N年交道, 自以为已经上古司机的老码农, 这一次居然被坑了一个礼拜: 事情描述起来很简单, 测试人员突然发现目前的版本,播放很多视频都卡顿, 由于该 ...

  7. android 广播 onreceive能干什么,Android BroadcastReceiver onReceive()在android 4.0上调用了两次...

    我遇到了android 4.0.3上的一个问题(在4.1.2上工作正常).我有我的Activity BroadcastReceiver.当我发送广播时,方法onReceive()总是被调用两次.请给我 ...

  8. android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...

    Android 9.0 开始,默认不允许明文传输,所以在建立网络连接时会使用 https 连接,同时进行安全认证.如果应用没有做对应处理,即会发生上述异常. 解决方法有两种: 一. 在应用里声明允许明 ...

  9. adb 判断imei,如何在Android 5.0上使用adb命令获取MEID和IMEI信息?

    The only command that I know that works on other versions is "adb shell dumpsys iphonesubinfo&q ...

  10. iOS 开发之--使用AFNetWorking3.1.0上传单张/多张图片

    在调试接口的时候,遇到一个问题,就是多张图片上传的时候,不管我上传多少张,只会上传成功最后一张,也就是说只有一张图片上传成功了,针对这个问题,通过查找资料,找到了原因,首先,在上传的过程中,我们获取到 ...

最新文章

  1. PC端微信小程序wxapkg解密
  2. python综合案例分享_Python面向对象 三大特性 综合案例+1(视频里的作业)
  3. 链接 动态链接 静态链接
  4. hdu 4530(数学)
  5. Bootstrap概述
  6. 软件质量管理之困境与对策思考
  7. arm shellcode 编写详析2
  8. 【转】SyntaxError: Non-ASCII character ‘\xe5′ in file
  9. SqlServer中 查询语句 case when 用法
  10. 《21天学通Java(第7版)》——VC程序员的学习笔记2
  11. 51单片机带闹钟c语言程序,51单片机定时闹钟程序(带按键)
  12. 墨者学院 - 零基础学习手工SQL注入
  13. PR音频处理——收尾音乐
  14. 两个卡方分布之和_数理统计|笔记整理(2)——样本与总体概念,抽样分布,次序统计量...
  15. 详解浮点数的精度问题
  16. 【CTF WriteUp】UTCTF 2020部分题解
  17. 计算机图像分析系统属于,智能图像分析系统
  18. torch tensor复数运算
  19. Python遗传算法求一元函数最大值
  20. 计算机usb端口没反应,电脑usb接口没反应怎么解决

热门文章

  1. Wince 7.0 远程控制工具的使用
  2. 如果能重来,我不会选择北漂——初见北京
  3. 监控和路由器不在同一个ip段_如何把二级路由器当交换机使用
  4. bzoj4516 [Sdoi2016]生成魔咒
  5. linux离线安装nettools,CentOS最小安装之安装net-tools并配置网络
  6. 国内千万级手机端视频互动娱乐直播完整源码
  7. html向下的箭头符号,向下的箭头符号
  8. 微软提供的无限次延长Vista激活
  9. Bezier曲线构造
  10. 小米路由mini刷潘多拉及老毛子固件-详细教程