开发功能: 
web前端提交上传文件 —> a服务器接收 —> 转发到b服务器进行文件处理 
下面是简单实现的代码,具体细节优化根本自己的需求更改。

    public String handleResponse(HttpServletRequest request, HttpServletResponse response)throws UnsupportedEncodingException, IOException {String method = request.getMethod();String url = "b服务器的api url";if (method.equals("POST")) { String contentType = "application/json; charset=UTF-8"; if (request.getContentType() != null) contentType = request.getContentType();// 会获取到空指针 Map<String, String[]> tmp = new HashMap(request.getParameterMap()); if (contentType.toLowerCase().startsWith("multipart/")) { MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class); MultipartFile file = multipartRequest.getFile("file"); return httpClientUpload(url, file, tmp); } } return null; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
public String httpClientUpload(String url, MultipartFile file, Map<String, String[]> params)throws ClientProtocolException, IOException {HttpClient httpclient = new DefaultHttpClient();// 请求处理页面 HttpPost httppost = new HttpPost(url); // 创建待处理的文件 String fileName = file.getOriginalFilename(); ContentBody files = new ByteArrayBody(file.getBytes(), fileName); // 对请求的表单域进行填充 MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("file", files); if (params != null) {//这里草草处理values[] for (String key : params.keySet()) { String[] values = params.get(key); for (int i = 0; i < values.length; i++) { String value = values[i]; try { value = URLEncoder.encode(value, "UTF-8"); reqEntity.addPart(key, new StringBody(value)); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } // 设置请求 httppost.setEntity(reqEntity); // 执行 HttpResponse response = httpclient.execute(httppost); if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) { HttpEntity entity = response.getEntity(); return EntityUtils.toString(entity, Charset.forName("UTF-8")); } return null; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

http://bbs.bxzc123.com/forum.php?mod=viewthread&tid=244545
http://bbs.bxzc123.com/forum.php?mod=viewthread&tid=244541
http://bbs.bxzc123.com/forum.php?mod=viewthread&tid=244538
http://bbs.bxzc123.com/forum.php?mod=viewthread&tid=244527
http://bbs.bxzc123.com/forum.php?mod=viewthread&tid=244528
http://bbs.bxzc123.com/forum.php?mod=viewthread&tid=244529
http://bbs.bxzc123.com/forum.php?mod=viewthread&tid=244530

转载于:https://www.cnblogs.com/sy646et/p/7266017.html

httpclient 实现文件上传中转相关推荐

  1. httpclient base64 文件上传_选择HttpClient还是OkHttp?

    来源:https://urlify.cn/IBbMRn 写在前面 为什么会写这篇文章,起因于和朋友的聊天 这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okht ...

  2. httpclient base64 文件上传_代码级别的上传下载神器

    前言 不知道大家在工作中有没有碰到过在代码级别中进行上传和下载呢,一般的场景为调用第三方的接口进行上传大文件和下载大文件. 我一个小伙伴最近在工作中就碰到了,他需要在代码中调用第三方http接口进行原 ...

  3. httpclient base64 文件上传_文件上传下载

    说道文件上传下载,这个业务需求并不是很复杂思想如下 1.将文件上传到 某台服务器上的指定的路径下也可以这样理解 文件上传就是将本地图片发送到别的地方,下载就是将别的地方的图片放在本地 2.将路径同文件 ...

  4. multipart/form-data与httpclient文件上传

    写在前面:本文讨论的内容都是基于java相关技术栈. 文件上传无论是在传统的基于html的web系统开发,还是目前主流的移动app开发,都是一个比较常见的功能需求.例如:web oa系统,可能会涉及到 ...

  5. Spring MVC + Java 多文件上传及多文件中转上传

    1.html内容 <div><form method="post" action="/Cyberspace/main/informationBatchA ...

  6. apache httpclient 工具类_Httpclient实现文件上传、文件下载看这篇文章就够了

    前言: 使用httpclient实现文件的上传下载,废话补不多说,直接上概念上代码. 1.相关概念: 1 HTTP HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 ...

  7. 转 使用 HttpClient 4 进行文件上传

    http://www.tuicool.com/articles/Y7reYb 1. 概述 本教程我们将描述如何使用 HttpClient 4进行一次多文件上传操作 . 我们将使用  http://ec ...

  8. android使用HttpURLConnection/HttpClient实现带参数文件上传

    本文参考自[http://blog.csdn.net/crazy__chen/article/details/47703781] 在Android 2.3及以上版本,使用的是HttpURLConnec ...

  9. java http 上传文件_java利用httpClient实现后台文件上传请求

    之前写过基于html和js的文件上传方法java 用springMVC 和HttpServletRequest 两种实现文件上传的方法和httpClient后台执行普通post请求的文章java通过h ...

最新文章

  1. 刚刚,2020 ACM Fellow放榜!陈怡然、颜水成、周昆等12名华人当选
  2. Hibernate之lazy延迟加载
  3. 学习鸟哥的Linux私房菜笔记(4)——文件
  4. 发展中国家如何炼成发达国家?
  5. 2009 年 5 月 忙碌的一个月
  6. Atomic Integer 原理分析-get方法
  7. 图解C语言的希尔排序
  8. 深刻理解Servlet运行机制和生命周期
  9. bouncycastle NoSuchFieldError:xxx 版本冲突
  10. D. Omkar and Medians
  11. c语言is int number,C语言中NSInteger,NSNumber以及Int的区别
  12. python输入4个数字_输入4个整数,要求按从小到大的顺序输出python
  13. io.js入门(三)—— 所支持的ES6(下)
  14. android ontouchevent 坐标,onTouchEvent(一) 你所必须知道的坐标详解
  15. fpgrowth算法实战 mlib_sparkmllib关联规则算法(FPGrowth,Apriori)
  16. CorelDRAWX4的VBA插件开发(九)循环的套用和统一尺寸
  17. 三角函数的思维导图(中)-1
  18. 怎样在 iPhone 或 iPad 上使用“快捷指令”?
  19. Android App开发动画特效中遮罩动画的讲解及实战演示(附源码 简单易懂 可直接使用)
  20. 杭州学军中学信友队趣味网络邀请赛 总结

热门文章

  1. Invalid argument: Key: label. Data types don't match. Data type: int64 but expected type: float
  2. Vue提供操作DOM的方法
  3. blockchain_eth客户端安装 geth使用 批量转账(二)
  4. Uva 1625 - Color Length(DP)
  5. 求字符串的最长回文字串 O(n)
  6. MVP群聊某美国公司的应聘试题(压死九个还是一个)
  7. U-Boot 图形化配置及其原理
  8. 线程同步(互斥锁、条件、读写锁、信号量)
  9. Java String类型转换成Date日期类型
  10. 运维必知的23个经验教训,值得收藏!