MultipartBody uploadFile 本地上传

/**
 * post方式二:stirng类型参数和上传文件参数
 */
public void uploadFile(Map<String, Object> params) {//标注 集合必须包含 url 
    //post请求方式二:multipart/form-data(不仅能够上传string类型的参数,还可以上传文件(流的形式,file))
    OkHttpClient okHttpClient1 = new OkHttpClient();//推荐使用多线程
    MultipartBody.Builder builder1 = new MultipartBody.Builder();//构建者模式
    
    builder1.setType(MultipartBody.FORM);//传输类型
    for (Map.Entry<String, Object> stringObjectEntry : params.entrySet()) {//没有判空
        String key = stringObjectEntry.getKey();
        Object value = stringObjectEntry.getValue();
        if (value instanceof File) {//如果请求的值是文件
            File file = (File) value;
            //MediaType.parse("application/octet-stream")以二进制的形式上传文件                                        
            builder1.addFormDataPart("jokeFiles", ((File) value).getName(), RequestBody.create(MediaType.parse("application/octet-stream"), file));
        } else {//如果请求的值是string类型
            if(!"url".equals(key)){
                builder1.addFormDataPart(key, value.toString());
            }
        }
    }
    //进行请求
    Request request1 = new Request.Builder().post(builder1.build()).url((String) params.get("url")).build();
    okHttpClient1.newCall(request1).enqueue(new Callback() {
        @Override
        public void onFailure(okhttp3.Call call, IOException e) {

        }

        @Override
        public void onResponse(okhttp3.Call call, Response response) throws IOException {

            if (response.isSuccessful()){//200-300

            }
        }
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值