文件上传MultipartBody使用方法

最近有使用一个文件上传的功能,须要在请求中添加文件,一块儿传给服务器服务器

Okhttp提供了这个文件添加而后上传的功能post

下面给出核心的代码,而后分析一下ui

  //多个文件上传,Filelist
    private static Request getFilesRequest(String url, List<File> files, Map<String, String> maps){
        MultipartBody.Builder builder=  new MultipartBody.Builder().setType(MultipartBody.FORM);
        if(maps==null){
            for(int i = 0;i < files.size();i++){
                builder.addPart( Headers.of("Content-Disposition", "form-data; name=\"file\";filename=\"file.jpg\""),
                        RequestBody.create(MediaType.parse("image/png"),files.get(i))
                ).build();
            }
        }else{
            for (String key : maps.keySet()) {
                String str = maps.get(key);
                builder.addFormDataPart(key,str );
            }
            for(int j = 0;j < files.size();j++){
                long fileSize = files.get(j).length();
                builder.addPart( Headers.of("Content-Disposition", "form-data; name=\"file\";filename=\"file.jpg\";filesize="+fileSize),
                        RequestBody.create(MediaType.parse("image/png"),files.get(j))
                );
            }
        }

        RequestBody body=builder.build();
        return   new Request.Builder().url(url).post(body).build();
    }

先说三个参数吧url

三个参数第一个是请求的URLspa

       第二个是Multipart的文件listcode

     第三个是headermap,就是请求的请求头paramsorm

首先经过Multipart的Builder模式实例化一个builderblog

其次若是Header的map为空则直接将file加入到part中继承

不然依次将headermap 和 file的list中的数据加入到Request中ip

完成后builder build 出来的MultipartBody 请求赋值给 RequestBody(Multipartbody继承了Requestbody)

以后将Request构建完成便可

        Call call =mOkhttpClient.newCall(request);

而后就是用Okhttp 进行请求,请求方法略过

相关文章
相关标签/搜索