HttpClient中转上传文件
来源:互联网 发布:淘宝下架软件 编辑:程序博客网 时间:2024/05/16 15:56
场景:客户端(浏览器)A---->选择文件上传---->服务器B---->中转文件---->服务器C---->返回结果---->服务器B---->客户端A
有时候在项目中需要把上传的文件中转到第三方服务器,第三方服务器提供一个接收文件的接口。
而我们又不想把文件先上传到服务器保存后再通过File来读取文件上传到第三方服务器,我们可以使用HttpClient来实现。
因为项目使用的是Spring+Mybatis框架,文件的上传采用的是MultipartFile,而FileBody只支持File。
所以这里采用MultipartEntityBuilder的addBinaryBody方法以数据流的形式上传。
这里需要引入两个jar包:httpclient-4.4.jar和httpmime-4.4.jar
/** * 中转文件 * * @param file * 上传的文件 * @return 响应结果 */ public String httpClientUploadFile(MultipartFile file) { final String remote_url = "http://192.168.1.99:8080/demo/file/upload";// 第三方服务器请求地址 CloseableHttpClient httpClient = HttpClients.createDefault(); String result = ""; try { String fileName = file.getOriginalFilename(); HttpPost httpPost = new HttpPost(remote_url); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流 builder.addTextBody("filename", fileName);// 类似浏览器表单提交,对应input的name和value HttpEntity entity = builder.build(); httpPost.setEntity(entity); HttpResponse response = httpClient.execute(httpPost);// 执行提交 HttpEntity responseEntity = response.getEntity(); if (responseEntity != null) { // 将响应内容转换为字符串 result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8")); } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; }
阅读全文
0 0
- HttpClient中转上传文件
- HttpClient中转上传文件
- httpclient 实现文件上传中转
- httpclient 上传文件
- httpclient上传文件
- httpclient 上传文件
- httpclient 上传文件
- HttpClient 3.1 文件上传
- HttpClient 4 - 文件上传
- common-httpclient上传文件
- android httpclient 上传文件
- Httpclient上传文件
- 使用httpclient上传文件
- HttpClient 4 - 文件上传
- httpclient 上传文件
- HttpClient上传文件
- HttpClient文件上传
- httpclient上传文件
- jQuery常用方法小结
- 如何求出插值表达式
- 12.19
- 深入理解共享元素变换(Shared Element Transition)
- 编写函数将一个NxN的二维数组按“次对角线”翻转
- HttpClient中转上传文件
- Turtlebot2玩家手册
- 【office技巧】教你PDF图片提取的方法
- iOS最新型号设备信息对照表
- tnc-fhh开源代码之IMCV测试
- mysql 存储 emoji报错的解决方案
- Android 如何在onCreate中拿到View的宽度和高度
- Logback新版本报no applicable action for [Encoding]问题
- 进程调度API之preempt_notifier_register/preempt_notifier_unregister