HttpClient4 post上传文件, struts2 action接收

简介:

Struts2使用注解实现文件的上传与下载(一)

http://blog.csdn.net/sxwyf248/article/details/7799785


之前写了一个Struts2文件上传的Action,可以编写一个jsp上传页面来测试这个Action,我们也可以编写一个简单的客户端来测试上传的Action。利用HttpClient能够方便的实现这个效果,具体代码如下:

        TestUpload.java

[java]  view plain copy
  1. package com.figo.test;  
  2.   
  3. import java.io.File;  
  4. import org.apache.http.HttpEntity;  
  5. import org.apache.http.HttpResponse;  
  6. import org.apache.http.HttpStatus;  
  7. import org.apache.http.client.HttpClient;  
  8. import org.apache.http.client.methods.HttpPost;  
  9. import org.apache.http.entity.mime.MultipartEntity;  
  10. import org.apache.http.entity.mime.content.FileBody;  
  11. import org.apache.http.impl.client.DefaultHttpClient;  
  12. import org.apache.http.util.EntityUtils;  
  13.   
  14. public class TestUpload {  
  15.   
  16.     public static void main(String[] args) {  
  17.         // TODO Auto-generated method stub  
  18.   
  19.         HttpClient httpclient = new DefaultHttpClient();  
  20.         try {  
  21.             HttpPost httppost = new HttpPost(  
  22.                     "http://localhost:8080/Upload/fileUpload!execute");  
  23.   
  24.             FileBody bin = new FileBody(new File("D:\\Wangyf15\\sign.txt"));  
  25.             MultipartEntity reqEntity = new MultipartEntity();  
  26.             reqEntity.addPart("upload", bin);// upload为请求后台的File upload属性  
  27.   
  28.             httppost.setEntity(reqEntity);  
  29.             HttpResponse response = httpclient.execute(httppost);  
  30.             int statusCode = response.getStatusLine().getStatusCode();  
  31.             if (statusCode == HttpStatus.SC_OK) {  
  32.                 HttpEntity resEntity = response.getEntity();  
  33.                 // httpclient自带的工具类读取返回数据  
  34.                 System.out.println(EntityUtils.toString(resEntity));  
  35.                 EntityUtils.consume(resEntity);  
  36.             }  
  37.         } catch (Exception e) {  
  38.             e.printStackTrace();  
  39.   
  40.         } finally {  
  41.             try {  
  42.                 httpclient.getConnectionManager().shutdown();  
  43.             } catch (Exception ignore) {  
  44.             }  
  45.         }  
  46.     }  
  47. }  
        这样比人工构造http post简单很多,HttpClient还有很多强大的能够,有待于继续深入研究。
相关文章
|
API 网络安全 网络架构
浅谈Elastic Search V8版本的一些重大改进
浅谈Elastic Search V8版本的一些重大改进
384 0
|
存储 分布式计算 大数据
大数据处理流程包括哪些环节
大数据处理流程作为当今信息时代的关键技术之一,已经成为各个行业的必备工具。这个流程涵盖了从数据收集、存储、处理、分析到应用的各个环节,确保了数据的有效利用和价值的最大化。
|
JSON NoSQL MongoDB
Compass
【6月更文挑战第8天】Compass
389 9
|
12月前
|
监控 安全 网络安全
|
12月前
|
数据可视化 搜索推荐 vr&ar
全景可视化特点+可视化功能实现
全景可视化特点+可视化功能实现
226 2
|
机器学习/深度学习 人工智能 安全
安全技术身份验证(Authentication)
【8月更文挑战第10天】
789 1
|
新能源 UED
【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 新能源汽车销售相关数据160M+下载
本文介绍了2023年第三届长三角高校数学建模竞赛B题的详细分析和研究,探讨了长三角地区新能源汽车发展与双碳目标的关系,提供了相关数据集的介绍和下载链接,并提出了对未来市场保有量、新能源汽车与传统燃油汽车的市场竞争关系以及碳达峰和碳中和时间的预测问题。
226 0
【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 新能源汽车销售相关数据160M+下载
|
边缘计算 运维 Kubernetes
与客户同行,ACK Edge携手专属钉获 “信通院边缘计算十佳案例”
基于ACK Edge的《专属钉混合云架构云边协同》被评为边缘计算十佳“星耀”案例,本文介绍ACK Edge典型场景以及在专属钉场景的落地案例。
|
人工智能 测试技术 UED
通义万相文本绘图
阿里云的通义万相是AI文本绘图和人像美化工具,适用于内容创作等多领域。评估其竞争力需考虑成本效益、易用性和应用场景。试用、部署、性能测试和用户反馈是选择的关键步骤。若在成本、用户体验和功能上表现优秀,可推荐给团队。
|
机器学习/深度学习 编解码 人工智能
OpenAI Sora:“60s超长长度”、“超强语义理解”、“世界模型”。浅析文生视频模型Sora以及技术原理简介
OpenAI,永远快别人一步!!!! 像ChatGPT成功抢了Claude的头条一样,这一次,谷歌核弹级大杀器Gemini 1.5才推出没几个小时,全世界的目光就被OpenAI的Sora抢了去。 100万token的上下文,仅靠一本语法书就学会了一门全新的语言,如此震撼的技术进步,在Sora的荣光下被衬得暗淡无光,着实令人唏嘘。 三个词总结 “60s超长长度”、“单视频多角度镜头”,“世界模型”
498 0
OpenAI Sora:“60s超长长度”、“超强语义理解”、“世界模型”。浅析文生视频模型Sora以及技术原理简介