httpclient 实现文件上传中转
Posted 第三方as
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于httpclient 实现文件上传中转的主要内容,如果未能解决你的问题,请参考以下文章