Android问题汇总(遥远的回忆过去)

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();
上一篇下一篇

猜你喜欢

热点阅读