使用 httpclient 上传文件方法的封装
2018-01-29 09:50
579 查看
本人使用 httpclient 进行接口测试的过程中,遇到了上传文件的接口,之前的文章已经完成了二进制流上传图片的代码,但是还没有封装成固定的使用方法,今天分享一下封装后的方法,供大家参考。
末了宣传一下自己的QQ群:群号:340964272
/** * 设置二进制流实体,params 里面参数值为 file * * @param httpPost * httpPsot 请求 * @param params * 请求参数 * @param file * 文件 */ @SuppressWarnings("unchecked") 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 }其中 getfilename()的方法如下:
/** * 获取文件名 * * @param file * 文件 * @return */ public static String getFileName(File file) { String path = file.getAbsolutePath(); String fileName = path.substring(path.lastIndexOf("/") + 1); return fileName; }此方法仅针对 Linux 系统,因为 Windows 系统在文件路径中用的“\”,在代码里是“\\”所以 Windows 系统的朋友得注意力。
末了宣传一下自己的QQ群:群号:340964272
相关文章推荐
- 使用HttpClient实现文件的上传下载方法
- 使用HttpClient实现文件的上传下载方法
- 解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题
- asp.net slickupload 使用方法(文件上传)
- Mvc3上传文件的方法封装
- 使用swfupload上传文件出现中文乱码现象的解决方法
- 自己封装的一个ASP.NET上传文件的方法
- asp.net(c#)开发中的文件上传组件uploadify的使用方法(带进度条)
- windows下使用IIS配置的PHP无法上传文件的解决方法
- 使用ADB上传、下载文件和安装软件的方法
- asp.net文件上传用到html的file控件,在使用母版页Master,更改form的Enctype=multipart/form-data的方法
- 使用HttpClient上传文件给服务器
- 使用类似ajax上传文件方法
- Android 使用HttpClient和第三方MiME文件上传类库,实现文件上传
- node.js+android(使用HttpURLConnection和HttpClient)实现文件上传
- 使用asp实现文件上传的各种方法
- asp.net slickupload 使用方法(文件上传)
- slickupload 使用方法[c# 超大文件上传
- 使用ASP实现文件上载(上传)的各种方法
- 使用CuteFTP上传文件方法