前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >httpclient上传文件方法的封装

httpclient上传文件方法的封装

作者头像
FunTester
发布2019-10-08 16:54:20
1.1K0
发布2019-10-08 16:54:20
举报
文章被收录于专栏:FunTesterFunTester

本人使用 httpclient 进行接口测试的过程中,遇到了上传文件的接口,之前的文章已经完成了二进制流上传图片的代码,但是还没有封装成固定的使用方法,今天分享一下封装后的方法,供大家参考。

代码语言:javascript
复制
/**
     * 设置二进制流实体,params 里面参数值为 file
     * 
     * @param httpPost
     *            httpPsot 请求
     * @param params
     *            请求参数
     * @param file
     *            文件
     */
    public void setMultipartEntityEntity(HttpPost httpPost, JSONObject params, File file) {
        String fileName = getFileName(file);
        InputStream inputStream = null;
        try {
            inputStream = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        Iterator<String> keys = params.keys();// 遍历 params 参数和值
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();// 新建builder对象
        while (keys.hasNext()) {
            String key = keys.next();
            String value = params.getString(key);
            if (value.equals("file")) {
                builder.addBinaryBody(key, inputStream, ContentType.create("multipart/form-data"), fileName);// 设置流参数
            } else {
                StringBody body = new StringBody(value, ContentType.create("text/plain", Consts.UTF_8));// 设置普通参数
                builder.addPart(key, body);
            }
        }
        HttpEntity entity = builder.build();// 生成entity
        httpPost.setEntity(entity);// 设置 entity
    }

此方法仅针对 Linux 系统,因为 Windows 系统在文件路径中用的“\”,在代码里是“\”所以 Windows 系统的朋友得注意力。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档