美文网首页
Retrofit图片上传

Retrofit图片上传

作者: 丶丶TkoRn丶丶 | 来源:发表于2017-10-24 14:38 被阅读0次

1、接口范例:

public interface FileUploadService {  

    //一张图片
    @Multipart
    @POST("upload")
    Call<ResponseBody> upFile(@Part("description") String description,
                              @Part MultipartBody.Part file);


    //多张图片
    @Multipart
    @POST("oss/androidUpload")
    Observable<UpImageResult> upFiles(@Part("description") String description,
                                      @PartMap() Map<String, RequestBody> maps);

}

2、代码示例:

public class FileUploadUtils {

    /**
     * 一张图片上传
     * @param mRepositoryManager
     * @param imgPath
     * @return
     */
    public static Observable<ResponseBody> upImage(Retrofit retrofit , String imgPath){

        File file = new File(imgPath);
        // 创建 RequestBody,用于封装构建RequestBody
        final RequestBody requestFile =
                RequestBody.create(MediaType.parse("multipart/form-data"), file);
        // MultipartBody.Part  和后端约定好Key,这里的partName是用image
        MultipartBody.Part body =
                MultipartBody.Part.createFormData("file", file.getName(), requestFile);
        return   retrofit.create(FileUploadService.class).upImage(1,body);
    }


    /**
     * 多张图片上传
     * @param mRepositoryManager
     * @param imgPath
     * @return
     */
      public static Observable<ResponseBody> upFiles(Retrofit retrofit , List<String> files) {
        Map<String,RequestBody> bodyMap = new HashMap<>();
        if (files.size() > 0){
            for (int i = 0; i < files.size() ; i++) {
                File file = new File(files.get(i));
                bodyMap.put("file"+i+"\"; filename=\""+file.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file));
            }
        }
        return  retrofit.create(FileUploadService.class).upFiles(1,bodyMap);
    }      
    
}

相关文章

网友评论

      本文标题:Retrofit图片上传

      本文链接:https://www.haomeiwen.com/subject/vmotpxtx.html