接口文档需要传两个参数 file file(代表上传的文件) String parameter(代表图片的信息json的字符串)。
在retrofit2中上传文件使用的是 @Part MultipartBody.Part file 然后图片信息的字符串是 @Part(“parameter”) RequestBody parameter(括号中的key值和文档的key值要一样)。
//头像上传
@Multipart
@POST("url")
Observable<BaseResponse<PhotoUploadBean>> upload(@Part("parameter") RequestBody parameter, @Part MultipartBody.Part file);
构建MultipartBody(注意:下面createFormData()方法中的第一个参数需要和接口文档的文件的key值一样)。
File file = new File(path);
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part part = MultipartBody.Part.createFormData("file", "tx", requestFile);
构建图片信息RequestBody
RequestBody description = RequestBody.create(MediaType.parse("multipart/form-data"), “我是图片”);
然后正常调用retrofit的方法上传就行了,此处我就不贴代码了。
注意两点:1.上传文件是用的@Part MultipartBody.Part。
2.key值要和文档的key值一样,不然后台解析不到。(之前就掉这个坑里,被坑了半天。)