文件上传
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. Android课程---关于Service的学习(后台运行)

    MainActivity.java package com.hanqi.test2; import android.content.ComponentName; import android.cont ...

  2. C语言中的插入排序(2016-12-30)

    直接插入排序: 算法思想:假设待排序的记录存放在数组R[1--n]中,初始时,i=1,R[1]自成一个有序区,无序区为R[2--n].然后从i=2起直到i=n,依次将R[i]插入当前的有序区R[1.. ...

  3. 学习笔记:因为java匿名类学习到接口的一些小用法

    在看CometD的示例代码时发现了许多有意思的代码,但说实话看别人的代码确实是件很累的事情,所以就看到这个知识点做一下记录吧.   先看一段代码: 代码1   这段代码中有一个new的操作,而且是在方 ...

  4. CYQ.Data V4系列全面开源(2013-08-04)

    致各位.NET开发者: 考虑到本人开源作品太多,个人维护力度有限,故自2013-08-04开始,开放原本需要授权使用的V4系列的最高版本V4.55的框架源码,同时也开放相对应的辅助工具源码,自此,V4 ...

  5. ABP理论学习之功能管理

    返回总目录 本篇目录 介绍 功能类型 定义功能 检查功能 功能管理者 版本说明 介绍 大多数的Saas(多租户)应用都有不同 功能的 版本(包).因此,他们可以给租户(客户)提供不同的 价格和功能选项 ...

  6. 三种观察者模式的C#实现

    系列主题:基于消息的软件架构模型演变 说起观察者模式,估计在园子里能搜出一堆来.所以写这篇博客的目的有两点: 观察者模式是写松耦合代码的必备模式,重要性不言而喻,抛开代码层面,许多组件都采用了Publ ...

  7. iOS开发系列--C语言之指针

    概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 什么是指针 ...

  8. 企业IT管理员IE11升级指南【7】—— Win7和Win8.1上的IE11功能对比

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  9. Atitit webservice的发现机制 discover机制

    Atitit webservice的发现机制 discover机制 1.1. Ws disconvert 的组播地址和端口就是37021 1.2. Ws disconvert的发现机制建立在udp组播 ...

  10. sun.misc.BASE64Encoder找不到jar包的解决方法

    1.右键项目->属性->java bulid path->jre System Library->access rules->resolution选择accessible ...