11.struts2文件上传
文件上传1.上传单个文件2.上传多个文件
1.上传单个文件实现步骤:(1)导入一个Jar包:commons-io-1.3.2.jar。只所以要导入这个Jar包,是因为要用到一个工具类FileUtil。若不使用此工具类,就无需导入此包了。(2)把form表单的enctype设置为:“multipart/form-data”,method设置为“post”,否则此表单不能用于上传。如下:<form enctype="multipart/form-data" action="xxx.action" method="post">
<input type="file" name="uf">
</form>(3)在Action类中添加以下属性private File uf;//上传的文件
private String ufFileName;//文件名称注意:蓝色部分对应于表单中文件字段的名称。而FileName是必须的。最后是,在Action方法中实现对上传文件的操作。2.上传多个文件
与上传单个文件相比,发生了如下几个变化:
(1)提交表单中出现多个文件上传栏,这多个的name属性名必须完全相同。
(2)Action中文件不再为File类型了,而是File类型的数组或List。当然,文件名也为相应的数组或List了。
(3)Action方法需遍历这些数组来上传这些文件。

<%@ page pageEncoding="utf-8"%> <html>
<head> <title>upload page</title> </head> <body>
<form action="single.action" enctype="multipart/form-data" method="post"> 文件<input type="file" name="uf"/><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
Step2:编写SingleFileUploadAction.java
package actions; import java.io.File;
import java.io.IOException; import org.apache.commons.io.FileUtils; import com.opensymphony.xwork2.ActionContext; public class SingleAction {
private File uf;
private String ufFileName;
public File getUf() {
return uf;
}
public void setUf(File uf) {
this.uf = uf;
}
public String getUfFileName() {
return ufFileName;
}
public void setUfFileName(String ufFileName) {
this.ufFileName = ufFileName;
} public String execute(){
String savePath="D:/";
if(uf!=null)
{
File saveFile=new File(savePath,ufFileName);
try {
//将 uf 文件的内容复制到saveFile中。
FileUtils.copyFile(uf, saveFile);
ActionContext.getContext().put("message","文件上传成功!");
} catch (IOException e) {
e.printStackTrace();
ActionContext.getContext().put("message","文件上传失败!");
} }else{
ActionContext.getContext().put("message","没有指定要上传的文件"); }
System.out.println(ufFileName);
return "success";
} }
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
修改上传文件大小限制:默认最大2M
使用方法:
在struts.xml中添加下面这段代码:
<constant name="struts.multipart.maxSize" value="5242880"/>
struts.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.multipart.maxSize" value="9999242880"></constant>
<package name="one" extends="struts-default">
<action name="single" class="actions.SingleAction">
<result>/message.jsp</result>
</action> </package> </struts>
Step3:编写message.jsp
<%@ page pageEncoding="utf-8" isELIgnored="false"%> <html>
<head> <title>message page</title> </head> <body>
提示信息:${message} </body>
</html>
http://127.0.0.1:8080/single_file_upload/




<%@ page pageEncoding="utf-8"%> <html>
<head> <title>upload page</title> </head> <body>
<form action="multiple.action" enctype="multipart/form-data" method="post"> 文件1<input type="file" name="ufs"/><br/>
文件2<input type="file" name="ufs"/><br/>
文件3<input type="file" name="ufs"/><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
Step2:编写MultipleAction.java
package actions; import java.io.File;
import java.io.IOException; import org.apache.commons.io.FileUtils; import com.opensymphony.xwork2.ActionContext; public class MultipleAction {
private File[] ufs;
private String[] ufsFileName; public File[] getUfs() {
return ufs;
} public void setUfs(File[] ufs) {
this.ufs = ufs;
} public String[] getUfsFileName() {
return ufsFileName;
} public void setUfsFileName(String[] ufsFileName) {
this.ufsFileName = ufsFileName;
} public String execute() {
StringBuffer sb=new StringBuffer();
String savePath = "D:/";
if (ufs != null) {
for (int i = 0; i < ufs.length; i++) {
if (ufs[i] != null) {
File saveFile = new File(savePath,ufsFileName[i]);
try {
FileUtils.copyFile(ufs[i], saveFile);
sb.append("文件"+(i+1)+"上传成功!");
} catch (IOException e) {
e.printStackTrace();
sb.append("文件"+(i+1)+"上传失败!");
}
} }
}else {
sb.append("文件指定要上传的文件!"); }
ActionContext.getContext().put("message",sb.toString());
return "success";
} }
Step2:编写web.xml与struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<package name="one" extends="struts-default">
<action name="multiple" class="actions.MultipleAction">
<result>/message.jsp</result>
</action> </package> </struts>
Step3:编写message.jsp
<%@ page pageEncoding="utf-8" isELIgnored="false"%> <html>
<head>
<title>message page</title>
</head> <body>
提示信息:${message} </body>
</html>
部署发布,启动tomcat,输入地址:
http://127.0.0.1:8080/mutiple_fle_upload/


注意:1.txt有内容,2.txt有内容,3.txt内容为空。


11.struts2文件上传的更多相关文章
- struts2文件上传大小限制问题小结
一:首先看一下程序执行中出现的对应报错信息,如下所示: [WARN ] 2015-03-03 15:31:11 :Unable to parse request org.apache.commons. ...
- struts2文件上传,文件类型 allowedTypes
struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...
- struts2文件上传大小限制问题小结(引用)
最后解决办法: 页面js控制上传文件的大小,在页面进行控制.如下代码 inputs是所有文本上传input DOM //名称信息 var nameStr=''; //大小信息 var sizeStr= ...
- struts2 文件上传和下载,以及部分源代码解析
struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form ...
- 【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】
一.struts2文件上传 1.上传文件的时候要求必须使得表单的enctype属性设置为multipart/form-data,把它的method属性设置为post 2.上传单个文件的时候需要在Act ...
- springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传
总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...
- Struts2文件上传下载
Struts2文件上传 Struts2提供 FileUpload拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容,fileUpload拦截器 默认在defau ...
- Struts2文件上传和下载(原理)
转自:http://zhou568xiao.iteye.com/blog/220732 1. 文件上传的原理:表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:1) ...
- Struts2 文件上传
一:表单准备 ① 要想使用HTML 表单上传一个或多个文件 –须把 HTML表单的 enctype属性设置为multipart/form-data –须把HTML 表单的method ...
随机推荐
- 关于IoCallDriver使用的疑惑
#pragma PAGEDCODE NTSTATUS HelloDDKRead(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp) { KdPrint(("Dr ...
- 培训SQLServer 嵌套事务PPT分享
培训SQLServer 嵌套事务PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E5%B5%8C%E5%A5%97%E4%BA%8 ...
- win7 64位下 mongodb安装及命令运行
有网友老催我把框架加上mongodb的支持,于是偶尔抽空看了看相关的文章. 今天有缘,就把mongodb安装了一下,中间遇到了小小的问题,So,把整个过程记录一下: 1:先上官网:http://www ...
- Expert 诊断优化系列------------------冤枉磁盘了
现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...
- 8天掌握EF的Code First开发之Entity Framework介绍
返回<8天掌握EF的Code First开发>总目录 本篇目录 Entity Framework概要 什么是ORM Entity Framework简史 Entity Framework具 ...
- JS实战 · 收缩菜单表单布局
获取节点的两种方式: 1.通过event对象的srcElement属性: 2.通过事件源对象用this传入. 代码如下: <html> <head> ...
- Sublime Text3 配置 NodeJs 环境
前言 大家都知道,Sublime Text 安装插件一般从 Package Control 中直接安装即可,当我安装 node js 插件时候,直接通过Package Control 安装,虽然插件安 ...
- java,H5微信蓝牙设备开发教程申请设备和添加设备(2)
转载地址 http://www.vxzsk.com/76.html 申请设备功能 a. 登录公众平台,点击左边功能栏的"添加功能插件",选择"设备功能". b ...
- Android笔记——permission权限大全
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permiss ...
- KnockoutJS 3.X API 第七章 其他技术(4) 速率限制
注意:这个速率限制API是在Knockout 3.1.0中添加的. 通常,更改的observable立即通知其订户,以便依赖于observable的任何计算的observable或绑定都会同步更新. ...