文件上傳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 進行請求,請求方法略過


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM