retrofit2,okhttp3,android-传递多张图片
2019-08-19 本文已影响31人
MonkeyLei
也是做个简单记录,时间长了忘了。另外由时间准备深入下rx家族,以便于加深对其的理解和使用。
1. 利用图片的file创建RequestBody
2. 利用MultipartBody.Builder.addFormDataPart将RequestBody添加到builder中,多张就多个body
3. 然后利用builder.build().parts()获取List<MultipartBody.Part>
4. 然后如下接口上传(看后台接口名称是啥...)上传即可,以及他们需要的参数。我们公司是php后台...
a. 后台上传方法upload-image
@Multipart
@POST("upload-image")
Observable<ResponseBody> uploadPic(@Part List<MultipartBody.Part> imgs);
b. 获取 List<MultipartBody.Part>
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM) ///< 表单类型
.addFormDataPart("access_token", UserInfoControlPresenterTool.getToken()); ///< ParamKey.TOKEN 自定义参数key常量类,即参数
String mediaType = "image/png";
if (file.getName().contains("png") || file.getName().contains("PNG")){
mediaType = "image/png";
}
if (file.getName().contains("jpg") || file.getName().contains("jpg")){
mediaType = "image/jpg";
}
if (file.getName().contains("jpeg") || file.getName().contains("JPEG")){
mediaType = "image/jpeg";
}
RequestBody requestBody = RequestBody.create(MediaType.parse(mediaType), file); ///< "multipart/from-data"
builder.addFormDataPart("Filedata", file.getName(), requestBody); ///< 多张图片,多个requestbody就行..
List<MultipartBody.Part> partsBody = builder.build().parts();