Retrofit2.0上传图片

正常使用Multipart方式上传图片

第一种上传单个图片,第二种上传多个图片

@Multipart
@POST(ACTION_URL)
Observable<ResponseBody> uploadFiles(@Part("image\"; filename=\"文件名.jpg") RequestBody file);

@Multipart @POST(ACTION_URL)
Observable<ResponseBody> uploadFiles(@Query("a") String type, @PartMap Map<String, RequestBody> requestBodys);

有时上传图片,需要上传几个参数

我最开始是使用@Part标签设置的,但服务器接收不到数据,可能是类型的原因

@Multipart @POST(ACTION_URL)
Observable<ResponseBody> uploadFiles(@Query("a") String type, @PartMap Map<String, RequestBody> requestBodys,@Part("userid") String userid);

改成下面的就可以了

@Multipart @POST(ACTION_URL)
Observable<ResponseBody> uploadFiles(@Query("a") String type, @PartMap Map<String, RequestBody> requestBodys,@Part("userid") RequestBody userid);

或者直接放到Map里

RequestBody useridBody = RequestBody.create(MediaType.parse("text/plain"), userid);
RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"), imageFile);

Map<String, RequestBody> map = new HashMap<>();
map.put("userid", useridBody);
map.put("photo\"; filename=\"" + imageFile.getName(), fileBody);

注意,photo是服务器接收的名称,filename必须写

 

 

转载于:https://my.oschina.net/android520/blog/677311

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值