httpclient 实现文件上传中转
开发功能:
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 实现文件上传中转相关推荐
- httpclient base64 文件上传_选择HttpClient还是OkHttp?
来源:https://urlify.cn/IBbMRn 写在前面 为什么会写这篇文章,起因于和朋友的聊天 这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okht ...
- httpclient base64 文件上传_代码级别的上传下载神器
前言 不知道大家在工作中有没有碰到过在代码级别中进行上传和下载呢,一般的场景为调用第三方的接口进行上传大文件和下载大文件. 我一个小伙伴最近在工作中就碰到了,他需要在代码中调用第三方http接口进行原 ...
- httpclient base64 文件上传_文件上传下载
说道文件上传下载,这个业务需求并不是很复杂思想如下 1.将文件上传到 某台服务器上的指定的路径下也可以这样理解 文件上传就是将本地图片发送到别的地方,下载就是将别的地方的图片放在本地 2.将路径同文件 ...
- multipart/form-data与httpclient文件上传
写在前面:本文讨论的内容都是基于java相关技术栈. 文件上传无论是在传统的基于html的web系统开发,还是目前主流的移动app开发,都是一个比较常见的功能需求.例如:web oa系统,可能会涉及到 ...
- Spring MVC + Java 多文件上传及多文件中转上传
1.html内容 <div><form method="post" action="/Cyberspace/main/informationBatchA ...
- apache httpclient 工具类_Httpclient实现文件上传、文件下载看这篇文章就够了
前言: 使用httpclient实现文件的上传下载,废话补不多说,直接上概念上代码. 1.相关概念: 1 HTTP HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 ...
- 转 使用 HttpClient 4 进行文件上传
http://www.tuicool.com/articles/Y7reYb 1. 概述 本教程我们将描述如何使用 HttpClient 4进行一次多文件上传操作 . 我们将使用 http://ec ...
- android使用HttpURLConnection/HttpClient实现带参数文件上传
本文参考自[http://blog.csdn.net/crazy__chen/article/details/47703781] 在Android 2.3及以上版本,使用的是HttpURLConnec ...
- java http 上传文件_java利用httpClient实现后台文件上传请求
之前写过基于html和js的文件上传方法java 用springMVC 和HttpServletRequest 两种实现文件上传的方法和httpClient后台执行普通post请求的文章java通过h ...
最新文章
- 刚刚,2020 ACM Fellow放榜!陈怡然、颜水成、周昆等12名华人当选
- Hibernate之lazy延迟加载
- 学习鸟哥的Linux私房菜笔记(4)——文件
- 发展中国家如何炼成发达国家?
- 2009 年 5 月 忙碌的一个月
- Atomic Integer 原理分析-get方法
- 图解C语言的希尔排序
- 深刻理解Servlet运行机制和生命周期
- bouncycastle NoSuchFieldError:xxx 版本冲突
- D. Omkar and Medians
- c语言is int number,C语言中NSInteger,NSNumber以及Int的区别
- python输入4个数字_输入4个整数,要求按从小到大的顺序输出python
- io.js入门(三)—— 所支持的ES6(下)
- android ontouchevent 坐标,onTouchEvent(一) 你所必须知道的坐标详解
- fpgrowth算法实战 mlib_sparkmllib关联规则算法(FPGrowth,Apriori)
- CorelDRAWX4的VBA插件开发(九)循环的套用和统一尺寸
- 三角函数的思维导图(中)-1
- 怎样在 iPhone 或 iPad 上使用“快捷指令”?
- Android App开发动画特效中遮罩动画的讲解及实战演示(附源码 简单易懂 可直接使用)
- 杭州学军中学信友队趣味网络邀请赛 总结
热门文章
- Invalid argument: Key: label. Data types don't match. Data type: int64 but expected type: float
- Vue提供操作DOM的方法
- blockchain_eth客户端安装 geth使用 批量转账(二)
- Uva 1625 - Color Length(DP)
- 求字符串的最长回文字串 O(n)
- MVP群聊某美国公司的应聘试题(压死九个还是一个)
- U-Boot 图形化配置及其原理
- 线程同步(互斥锁、条件、读写锁、信号量)
- Java String类型转换成Date日期类型
- 运维必知的23个经验教训,值得收藏!