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模型的开发是为了解决序列转换及神经机器翻译问题。
9003 0
|
10月前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
27842 18
|
10月前
|
运维 监控 网络协议
OSPF的网络设计原则
OSPF的网络设计原则
173 3
|
存储 分布式计算 资源调度
吐血整理的Hadoop最全开发指南【Hadoop集群搭建篇】(上)
吐血整理的Hadoop最全开发指南【Hadoop集群搭建篇】
596 0
吐血整理的Hadoop最全开发指南【Hadoop集群搭建篇】(上)
|
弹性计算
阿里云服务器ip地址是多少啊怎么查看?
阿里云服务器ip地址是多少啊怎么查看?
712 2
|
SQL 关系型数据库 MySQL
PolarDB-X 与 DRDS 有什么区别?1
PolarDB-X 与 DRDS 有什么区别?1
277 1
|
弹性计算 对象存储 开发者
新手必看:阿里云服务器可以试用吗?试用之后还能享受新用户价格吗?
阿里云服务器可以试用吗?阿里云服务器是可以试用的,目前个人实名认证用户可申请1核2GB配置每月750小时时长的试用,企业实名认证用户可试用的最高配置是4核16G,最长试用时间是3个月。试用之后还能享受新用户优惠价格吗?目前阿里云最新试用政策已更改,从2023年4月1号开始,云服务器ECS免费试用权益无法与新用户优惠购买活动同时享受,即:领取了云服务器ECS免费试用权益的用户,将不能参产品新用户的相关活动。
1343 0
新手必看:阿里云服务器可以试用吗?试用之后还能享受新用户价格吗?
|
Java
使用logback输出日志总结
使用logback输出日志总结
778 0
使用logback输出日志总结
|
XML 存储 移动开发
Android基础 | 关于Activity你应该明白的一切
Activity 作为一个老生常谈的话题,它是我们刚接触Android开发就遇到,虽然已有一段时间开发经验,但谈起完全搞懂Activity相关,不敢妄言,故结合个人理解及书籍参考,简单总结一下 Activity基础相关知识,其中也留出了一些有意思的问题。
436 0
|
IDE Java 语音技术
JAVA对接腾讯语音实时识别引擎
JAVA对接腾讯语音实时识别引擎
520 0

热门文章

最新文章