`

Struts2多文件上传,字段一一对应。

阅读更多



 不多说,直接看代码:

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

  • 大小: 7.2 KB
  • 大小: 21 KB
  • 大小: 10.3 KB
分享到:
评论

相关推荐

    Struts2多个文件上传

    在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...

    struts2实现文件上传下载

    本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...

    struts2多文件的上传

    Action类需要包含一个或多个`java.io.File`类型的字段,以及对应的`java.lang.String`类型的属性,用于接收上传的文件。 3. **表单设计** HTML表单需设置`enctype="multipart/form-data"`,这样才能让浏览器知道...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    struts2实现多文件上传功能

    Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`&lt;constant&gt;`标签来设置`struts....

    一个Struts1多文件上传实例(附Form中传List示例)

    2. **多文件上传**: 在Struts1中,多文件上传通常使用Apache的Commons FileUpload库来处理。该库提供了一种处理multipart/form-data类型请求的方式,这种类型的请求通常用于文件上传。要实现多文件上传,需要在...

    struts2 实现文件批量上传

    Struts2会自动将上传的文件绑定到这些字段。 4. **文件验证**:在处理文件上传时,通常需要对文件大小、类型等进行验证。这可以通过自定义拦截器或在Action类的方法中实现。 5. **文件存储**:上传的文件需要存储...

    swfuplaod+struts2实现多文件上传

    下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用Flash技术提供了一个高级的文件上传体验。它的主要特性包括: 1. **多文件选择**...

    struts2实现多文件上传下载

    需求 1.能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.能够对上传路径进行配置文件指定(upload.properties),使用...多文件 上传 下载 随意文件 java Struts2 单例 配置 动态读取 李顺利

    struts2多文件上传显示进度

    在Struts2中实现多文件上传并显示进度是常见的需求,尤其是在处理大文件或者批量上传时,用户需要实时了解上传进度以提升用户体验。在本案例中,我们将探讨如何在不依赖任何第三方插件的情况下实现这一功能。 首先...

    Struts2之struts2文件上传详解案例struts011

    在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人照片、文档或者其他类型的文件。在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解...

    struts2实现的多个文件上传

    通常,Action类会包含一个或多个字段,每个字段对应一个上传的文件。例如: ```java public class FileUploadAction extends ActionSupport { private List&lt;FormFile&gt; files; // getters and setters } ```...

    struts2文件上传jar

    在Action类中,你需要定义一个或多个属性来接收上传的文件,并设置相应的注解来告知Struts2如何处理它们。 在Action类中,你可以使用`File` 或 `FileItem` 对象来接收文件。`FileItem` 是Apache Commons FileUpload...

    struts2多文件上传

    3. **Struts2 Action配置**:首先,你需要创建一个Struts2 Action类,这个类通常会有一个或多个`List&lt;File&gt;`类型的字段,用于接收上传的文件。在struts.xml配置文件中,需要配置对应的Action,指定文件字段的参数名...

    Struts2实现文件上传

    要实现文件上传,首先需要在Action类中定义一个或多个`File`和对应的`String`类型的属性,`File`属性用于接收上传的文件,而`String`属性则用于存储文件名。例如: ```java private File uploadFile; private ...

    struts2上传文件源代码

    对于文件上传,Action类会包含一个或多个接收上传文件的字段,通常使用`@RequestParam`或`@FormParam`注解。 2. **表单(JSP页面)**:用户界面部分,使用HTML `&lt;form&gt;` 标签来创建上传表单。`enctype="multipart/...

    Struts2多文件上传

    在Struts2中实现多文件上传功能是一项常见的需求,这使得用户可以在一次请求中上传多个文件。本篇文章将深入探讨如何在Struts2框架下实现多文件上传,并基于提供的"Struts2_10"压缩包文件进行详细说明。 首先,我们...

    struts2多文件上传和下载

    在Struts2的配置文件(通常是struts.xml)中,我们需要为上传操作定义一个Action,并配置对应的Result类型,通常使用`stream`结果类型来处理文件流。 4. **文件存储** 上传的文件需要存储在服务器的某个位置。你...

Global site tag (gtag.js) - Google Analytics