不多说,直接看代码:
UploadAction.java:
import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport { // 用3个map装文件,文件名,文件类型。 private Map<String, File> filemap; private Map<String, String> namemap; private Map<String, String> typemap; // 不需要创建3个map的set、get方法,只需要创建你要上传的文件的set、get方法。 // 命名规则:如setXXX();setXXXFilename();setXXXContentType();,这里无需创建XXX成员 // Struts2参数的值是用set方法注入的,所以在前台如果有个<input type="file" // name="XXX">,它会自动找到setXXX(),setXXXFilename();setXXXContentType(); // 我们在这些set方法里面写自己的东西,比如用一个Map对象来接收传递过来的对象,这样可以做到一一对应 // 记住要使用HashMap()实例化Map对象,因为HashMap允许Null,可以防止前台如果没有选择文件从而导致报错的问题。 public UploadAction() { filemap = new HashMap<String, File>(); namemap = new HashMap<String, String>(); typemap = new HashMap<String, String>(); } public void setFile1(File file) { filemap.put("File1", file); } public void setFile2(File file) { filemap.put("File2", file); } public void setFile3(File file) { filemap.put("File3", file); } public void setFile1FileName(String filename) { namemap.put("File1", filename); } public void setFile2FileName(String filename) { namemap.put("File2", filename); } public void setFile3FileName(String filename) { namemap.put("File3", filename); } public void setFile1ContentType(String filetype) { typemap.put("File1", filetype); } public void setFile2ContentType(String filetype) { typemap.put("File2", filetype); } public void setFile3ContentType(String filetype) { typemap.put("File3", filetype); } @Override public String execute() throws Exception { // 遍历filemap Iterator keyValuePairs = filemap.entrySet().iterator(); for (int i = 0; i < filemap.size(); i++) { Map.Entry entry = (Map.Entry) keyValuePairs.next(); String filekey = (String) entry.getKey();//这个是对应的标记,如"File1" File filevalue = (File) entry.getValue(); String filename = namemap.get(filekey);//取出文件名 String filetype = typemap.get(filekey);//取出文件类型 System.out.println("第" + (i + 1) + "个文件:\n" + filekey + filename + "\n" + filetype + "\n" + filevalue + "\n-----------------------------------\n"); } return super.SUCCESS; } public Map<String, File> getFilemap() { return filemap; } public Map<String, String> getNamemap() { return namemap; } public Map<String, String> getTypemap() { return typemap; } }
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"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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> <!-- <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> --> </filter-mapping> </web-app>
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="struts2" extends="struts-default"> <action name="uploadaction" class="upload.UploadAction"> <result name="success">/success.jsp</result> </action> </package> </struts>
index.jsp:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="tex/html;charset=UTF-8"> <title>My JSP 'index.jsp' starting page</title> </head> <body> <s:form action="uploadaction" method="post" enctype="multipart/form-data"> <s:file name="file1"></s:file> <s:file name="file2"></s:file> <s:file name="file3"></s:file> <s:submit></s:submit> </s:form> </body> </html>
success.jsp:
<%@ page contentType="text/html; charset=GBK"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="tex/html;charset=GBK"> <title>My JSP 'index.jsp' starting page</title> </head> <body> 上传成功: <br /> filemap: <br /> <s:iterator value="filemap"> <s:property value="key" />: <s:property value="value" /> <br /> </s:iterator> <br /> namemap: <br /> <s:iterator value="namemap"> <s:property value="key" />: <s:property value="value" /> <br /> </s:iterator> <br /> typemap: <br /> <s:iterator value="typemap"> <s:property value="key" />: <s:property value="value" /> <br /> </s:iterator> <s:debug></s:debug> </body> </html>
运行截图:
这里故意只选择两个文件上传,它们的name属性与后台对应。
好了,就这么多。附件有源代码。
第一次发博客。
ZoeMak
2012/08/18
相关推荐
Struts2多个文件上传 多个文件上传分为List集合和数组,下面我们着重介绍一下list集合的上传。都大同小异。
在struts2基础上实现的包括单文件、多文件的上传及下载
需求 1.能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.能够对上传路径进行配置文件指定(upload.properties),使用...多文件 上传 下载 随意文件 java Struts2 单例 配置 动态读取 李顺利
struts2多文件上传 struts2多文件上传 struts2多文件上传
struts2多文件上传显示进度 无插件
一个swfupload+struts2实现多文件上传的案例。
struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置...
Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码
Struts2 文件上传下载 多文件 单文件 实例;支持单个或多个文件的上传下载,并且自定义上传文件的大小和类型!!!
struts2实现的多个文件上传struts2实现的多个文件上传struts2实现的多个文件上传struts2实现的多个文件上传
struts2实现文件上传(单个+多个文件上传
Struts2上传文件(直接用request)
struts2 实现多文件上传功能,是一个很好的学习参考资料
struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传
struts2 文件上传中 ContentType对应表
Struts2文件批量上传.zip Struts2文件批量上传.zip Struts2文件批量上传.zip Struts2文件批量上传.zip Struts2文件批量上传.zip
该项目采用的是典型的struts2框架,在此框架之上实现了多文件上传的功能。
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载