文件上传
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方法需遍历这些数组来上传这些文件。

 下面例子都已导入struts2核心jar包基础上,又导入了commons-io-1.3.2.jar包。
实例1:上传单个文件—fileupload
代码文档目录如下:

Step1:编写index.jsp页面
<%@ 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";
} }
Step2:编写web.xml与struts.xml
web.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>

修改上传文件大小限制:默认最大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>
注意,当文件内容为空时,tomcat后台会报错。
部署发布,启动tomcat,输入地址:
http://127.0.0.1:8080/single_file_upload/
 

实例2:上传多个文件—fileupload
Step1:编写index.jsp页面
<%@ 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

web.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文件上传的更多相关文章

  1. struts2文件上传大小限制问题小结

    一:首先看一下程序执行中出现的对应报错信息,如下所示: [WARN ] 2015-03-03 15:31:11 :Unable to parse request org.apache.commons. ...

  2. struts2文件上传,文件类型 allowedTypes

    struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...

  3. struts2文件上传大小限制问题小结(引用)

    最后解决办法: 页面js控制上传文件的大小,在页面进行控制.如下代码 inputs是所有文本上传input DOM //名称信息 var nameStr=''; //大小信息 var sizeStr= ...

  4. struts2 文件上传和下载,以及部分源代码解析

    struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form ...

  5. 【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】

    一.struts2文件上传 1.上传文件的时候要求必须使得表单的enctype属性设置为multipart/form-data,把它的method属性设置为post 2.上传单个文件的时候需要在Act ...

  6. springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传

    总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...

  7. Struts2文件上传下载

    Struts2文件上传 Struts2提供 FileUpload拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容,fileUpload拦截器 默认在defau ...

  8. Struts2文件上传和下载(原理)

    转自:http://zhou568xiao.iteye.com/blog/220732 1.    文件上传的原理:表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:1)     ...

  9. Struts2 文件上传

    一:表单准备 ① 要想使用HTML 表单上传一个或多个文件     –须把 HTML表单的 enctype属性设置为multipart/form-data     –须把HTML 表单的method ...

随机推荐

  1. bzoj3380+3381+3382+3383 Usaco2004 Open

    四道比较水的题 T1:SPFA+状压 #include<stdio.h> #include<string.h> #include<algorithm> #inclu ...

  2. 项目 "Model" 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何更改。

  3. java.sql.SQLException: 关闭的连接

    在Dao接口实现类里面的conn.close()之类的关闭数据库连接的代码注释掉就可以了. 可能还有别的解决方法,不过这样改比较方便.

  4. Scrum Guide - Scrum指南中文版

    现在公司在使用敏捷开发模式进行日常的开发和管理工作,所以我看了下Ken Schwaber的<Scrum Guide>这本小册子,原本是英文的,这里提供中文的,以供日后复习和参考. Scru ...

  5. 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案

    将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...

  6. 你get了无数技能,为什么一事无成

      前几日看到阮一峰老师的发的一句话,颇有感慨,「你只是坐在电脑前,往网上发表了一段文字或者一张图片,随便什么,就能够接触到多少陌生的灵魂.这就是我热爱互联网的原因」.我打心底认为这是一个最好的时代, ...

  7. SQL Azure (18) 使用External Table实现垮库查询

    <Windows Azure Platform 系列文章目录> 问题 1.我们在进行SQL Server开发的时候,经常会使用垮库查询.但是在默认情况下,使用Azure SQL Datab ...

  8. 我如何介绍 Microservice

    这篇文章转自我的 Github blog 一天我司招财猫姐(HR 大人)问我,你给我解释一下 Microservice 是什么吧.故成此文.一切都是从一个创业公司开始的. 故事 最近的创业潮非常火爆, ...

  9. @OutputCache 详解-文章目录

    OutputCache概念学习 OutputCache属性详解(一)一Duration.VaryByParam OutputCache属性详解(二)一 Location OutputCache属性详解 ...

  10. iOS-Xcode使用技巧

    一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编 ...