okhttp 上传带参数文件

本文介绍了一个使用OkHttp实现的文件上传方法,通过MultipartBuilder构建请求体,并支持传递额外参数。该方法支持异步回调机制,适用于Android和其他Java项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


    /**
     * 上传文件
     * @param actionUrl 连接地址
     * @param paramsMap 参数
     * @param callback 回调
     * @param <T>
     */
    public static <T>void upLoadFile(String actionUrl, HashMap<String, Object> paramsMap, Callback callback) {

//        RequestBody requestBody = new MultipartBuilder() //建立请求的内容
//                .type(MultipartBuilder.FORM)//表单形式
//                .addFormDataPart("token", token)//携带的参数
//                .addFormDataPart("file", file.getName(), RequestBody.create(null, file))//第一个参数是服务器接收的名称,第二个是上传文件的名字,第三个是上传的文件
//                .build();
//        Request request = new Request.Builder()//建立请求
//                .url(url)//请求的地址
//                .post(requestBody)//请求的内容(上面建立的requestBody)
//                .build();


        try {
            OkHttpClient okHttpClient = new OkHttpClient();
            MultipartBuilder builder = new MultipartBuilder();
            builder.type(MultipartBuilder.FORM);
            //追加参数
            for (String key : paramsMap.keySet()) {
                Object object = paramsMap.get(key);
                if (!(object instanceof File)) {
                    builder.addFormDataPart(key, object.toString());
                } else {
                    File file = (File) object;
                    builder.addFormDataPart(key, file.getName(), RequestBody.create(null, file));
                }
            }
            //创建RequestBody
            RequestBody body = builder.build();
            //创建Request
            final Request request = new Request.Builder().url(actionUrl).post(body).build();
            HLog.v("upLoadFile","upLoadFile",request.urlString());
            Call call=okHttpClient.newCall(request);
            call.enqueue(callback);
        } catch (Exception e) {
            Log.e(TAG, e.toString());
        }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值