Struts2文件上传

简介: 1  在Struts2中上传文件需要 commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar 这两个包。  2  确认页面form表单上的提交方式为POST,enctype属性的值为“multipart/form-data”。

 1  在Struts2中上传文件需要 commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar 这两个包。

 2  确认页面form表单上的提交方式为POST,enctype属性的值为“multipart/form-data”。

fileupload.jsp页面:

1 <body>
2        <form action="<%=basePath%>lixiang/file_upload.action" method="post" enctype="multipart/form-data">
3            选择文件:<input type="file" name="upload"/><br/>
4           <input type="submit" value="提交"/>
5        </form>
6   </body>
FileUploadAction.java
 1 package com.cy.action;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 
 9 import com.opensymphony.xwork2.ActionSupport;
10 
11 public class FileUploadAction extends ActionSupport{
12 
13     private static final long serialVersionUID = 1L;
14     private File upload;
15     //获取上传文件类型
16     private String uploadContentType;
17     //获取上传文件名
18     private String uploadFileName;
19     //保存路径
20     private String savePath;
21     
22     public String upload(){
23     
24         File dir = new File(savePath);
25         //先判断文件夹是否存在
26         if(!dir.exists()){
27             dir.mkdir();
28         }
29         
30         //再判断文件是否已经存在
31         String filePath = savePath + "\\"+uploadFileName;
32         File file = new File(filePath);//上传后的目标文件
33         FileOutputStream out = null;
34         FileInputStream in = null;
35         if(!file.exists()){
36             try {
37                 out = new FileOutputStream(filePath);
38                 in = new FileInputStream(upload);
39                 
40                 byte[] bytes = new byte[1024];
41                 int lenth = 0;
42                 while ((lenth = in.read(bytes)) > 0) {
43                     out.write(bytes, 0, lenth);
44                 }
45             
46             } catch (FileNotFoundException e) {
47                 e.printStackTrace();
48             } catch (IOException e) {
49                 e.printStackTrace();
50             }finally{
51                 try {
52                     in.close();
53                     out.close();
54                 } catch (IOException e) {
55                     e.printStackTrace();
56                 }
57             }
58         }
59         
60         return SUCCESS;
61     }
62 
63 
64 // 提供set、get方法
65     public File getUpload() {
66         return upload;
67     }
68     public void setUpload(File upload) {
69         this.upload = upload;
70     }
71     public String getUploadContentType() {
72         return uploadContentType;
73     }
74     public void setUploadContentType(String uploadContentType) {
75         this.uploadContentType = uploadContentType;
76     }
77     public String getUploadFileName() {
78         return uploadFileName;
79     }
80     public void setUploadFileName(String uploadFileName) {
81         this.uploadFileName = uploadFileName;
82     }
83     public String getSavePath() {
84         return savePath;
85     }
86     public void setSavePath(String savePath) {
87         this.savePath = savePath;
88     }
89     
90     
91 }

struts.xml

1 <action name="file_*" class="com.cy.action.FileUploadAction" method="{1}">
2             <param name="savePath">E:\images</param>  <!-- 设置上传文件存放的路径  -->
3             <result name="success">/layout.jsp</result> 
4             <result name="input">/fileupload.jsp</result> 
5         </action>

 

相关文章
|
机器学习/深度学习 人工智能 网络架构
Transformer原理解析——一种Open AI和DeepMind都在用的神经网络架构
Transformer模型是一种日益流行的神经网络结构。它最近被OpenAI用于他们的语言模型中。与此同时,近期也被DeepMind用于它们的程序“星际争霸”中击败了一名顶级职业星际玩家。 Transformer模型的开发是为了解决序列转换及神经机器翻译问题。
9031 0
|
7月前
|
传感器 人工智能 物联网
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
546 85
|
6月前
|
传感器 人工智能 算法
傅利叶开源人形机器人,提供完整的开源套件!Fourier N1:具备23个自由度和3.5米/秒运动能力
傅利叶推出的开源人形机器人N1搭载自研动力系统与多模态交互模块,具备23个自由度和3.5米/秒运动能力,提供完整开源套件助力开发者验证算法。
433 3
傅利叶开源人形机器人,提供完整的开源套件!Fourier N1:具备23个自由度和3.5米/秒运动能力
|
12月前
|
存储 数据采集 监控
大数据技术:开启智能决策与创新服务的新纪元
【10月更文挑战第5天】大数据技术:开启智能决策与创新服务的新纪元
|
Web App开发 缓存 网络协议
如何实现服务端向客户端推送数据
常见的http协议只能从客户端主动向服务端请求数据,而服务端无法向客户端发送数据.本文通过介绍几种方式来实现上述功能.
|
11月前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
28391 18
|
11月前
|
运维 监控 网络协议
OSPF的网络设计原则
OSPF的网络设计原则
207 3
|
12月前
|
IDE API 定位技术
Python--API编程:IP地址翻译成实际的物理地址
Python--API编程:IP地址翻译成实际的物理地址
192 0
|
SQL 关系型数据库 MySQL
PolarDB-X 与 DRDS 有什么区别?1
PolarDB-X 与 DRDS 有什么区别?1
287 1
|
弹性计算 对象存储 开发者
新手必看:阿里云服务器可以试用吗?试用之后还能享受新用户价格吗?
阿里云服务器可以试用吗?阿里云服务器是可以试用的,目前个人实名认证用户可申请1核2GB配置每月750小时时长的试用,企业实名认证用户可试用的最高配置是4核16G,最长试用时间是3个月。试用之后还能享受新用户优惠价格吗?目前阿里云最新试用政策已更改,从2023年4月1号开始,云服务器ECS免费试用权益无法与新用户优惠购买活动同时享受,即:领取了云服务器ECS免费试用权益的用户,将不能参产品新用户的相关活动。
1374 0
新手必看:阿里云服务器可以试用吗?试用之后还能享受新用户价格吗?