1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android Retrofit2.0 上传单张图片和多张图片

Android Retrofit2.0 上传单张图片和多张图片

时间:2024-06-19 07:13:02

相关推荐

Android Retrofit2.0 上传单张图片和多张图片

上传单张图片

@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 /invitation/uploadD/OkHttp: Content-Type: multipart/form-data; boundary=9741fa91-558d-4b71-9117-e44139c9c02cD/OkHttp: Content-Length: 117843D/OkHttp: --9741fa91-558d-4b71-9117-e9c0144139ccD/OkHttp: Content-Disposition: form-data; name="file"; filename="Luban_1556607508304.jpg"D/OkHttp: Content-Type: multipart/form-dataD/OkHttp: Content-Length: 117616D/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 /invitation/upload (186ms)D/OkHttp: Server: openresty/1.13.6.2D/OkHttp: Date: Tue, 30 Apr 06:58:31 GMTD/OkHttp: Content-Type: application/json;charset=UTF-8D/OkHttp: Content-Length: 113D/OkHttp: Connection: keep-aliveD/OkHttp: {"success":true,"msg":"上传成功","data":{"imgs":"parkingpoint_img/609c6d62-b76d-47f3-98fc-8663d25bae60.jpg"}}D/OkHttp: <-- END HTTP (113-byte body)

上传多张图片的报文

贴上报文日志以作参考

D/OkHttp: --> POST /invitation/uploadD/OkHttp: Content-Type: multipart/form-data; boundary=0a8b3a28-37b9-49be-a23e-e57470f29025D/OkHttp: Content-Length: 234964D/OkHttp: --0a8b3a28-37b9-49be-a23e-e590257470f1D/OkHttp: Content-Disposition: form-data; name="file1"; filename="Luban_1556603633113.jpg"D/OkHttp: Content-Type: multipart/form-dataD/OkHttp: Content-Length: 116938D/OkHttp: ������JFIF����������������C��.....省略.....D/OkHttp: --0a8b3a28-37b9-49be-a23e-e590257470f1D/OkHttp: Content-Disposition: form-data; name="file2"; filename="Luban_1556603633644.jpg"D/OkHttp: Content-Type: multipart/form-dataD/OkHttp: Content-Length: 117616D/OkHttp: ������JFIF����������������C��.....省略.....D/OkHttp: --0a8b3a28-37b9-49be-a23e-e590257470f1--D/OkHttp: --> END POST (234964-byte body)D/OkHttp: <-- 200 OK /invitation/upload (1129ms)D/OkHttp: Server: openresty/1.13.6.2D/OkHttp: Date: Tue, 30 Apr 05:53:57 GMTD/OkHttp: Content-Type: application/json;charset=UTF-8D/OkHttp: Content-Length: 113D/OkHttp: Connection: keep-aliveD/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字符串/表单

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。