zoukankan      html  css  js  c++  java
  • 文件上传MultipartBody使用方法

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

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

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

      //多个文件上传,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

           第二个是Multipart的文件list

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

    首先通过Multipart的Builder模式实例化一个builder

    其次如果Header的map为空则直接将file加入到part中

    否则依次将headermap 和 file的list中的数据加入到Request中

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

    之后将Request构建完成即可

            Call call =mOkhttpClient.newCall(request);

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

  • 相关阅读:
    idea集成 MyBatis Generator 插件,自动生成dao,model,sql map文件
    maven中的groupId和artifactId到底指的是什么?
    java数据结构简单点
    (二)java集合框架综述
    (一)java集合框架——Iterable
    jquery版本的问题造成第二次全选无效
    Ironic , Openstack Baremetal Hypervisor
    openstack热迁移和冷迁移
    手动安装OpenStack Mistral
    Why provision Bare Metal
  • 原文地址:https://www.cnblogs.com/fengfenghuifei/p/6898201.html
Copyright © 2011-2022 走看看