`
tudou721
  • 浏览: 61556 次
  • 性别: Icon_minigender_2
  • 来自: 河南
社区版块
存档分类
最新评论

用list实现struts2组图上传

阅读更多

首先要做好准备工作:导入jar包struts2-core-2.0.9.jar,commons-fileupload-1.2.jar,commons-io-1.1.jar,freemarker-2.3.8.jar,xwork-2.0.4.jar,commons-logging-1.0.4.jar,commons-io-1.1.jar。

   创建listupload.jsp页面(以三个图片为例):

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>
		<title>使用list同时上传多个图片</title>
	</head>

	<body>
		<s:form method="post" action="listupload.action"
			enctype="multipart/form-data">
			<s:file name="upload" label="Img1"></s:file>
			<s:file name="upload" label="Img2"></s:file>
			<s:file name="upload" label="Img3"></s:file>
			<s:submit value="提交"></s:submit>
		</s:form>
	</body>
</html>

   创建action类:   

   

package bag;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Date;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class ListUploadAction extends ActionSupport {

	private String title;

	private List<File> upload;//这是与页面对应的一组图片的name属性名upload;

	private List<String> uploadContentType;//这是图片的类型,必须是与upload对应的ContentType,这里没有用到;

	private List<String> uploadFileName;//这是图片本身的名称,必须是与upload对应的FileName;

	private String savePath;//这是图片上传后在服务器端保存的路径名,该值在struts.xml中配置;

	private String msg;//上传完成后在result.jsp页面提示消息;

	public String execute() throws Exception {
		// 取出需要上传的文件list对象
		List<File> files = this.getUpload();
		// 遍历每个需要上传的文件
		for (int i = 0; i < files.size(); i++) {
			// 建立文件上传输出流
			FileOutputStream fos = new FileOutputStream(getSavePath() + "\\"
					+ getUploadFileName().get(i));
			// 建立文件输入流
			FileInputStream fis = new FileInputStream(files.get(i));
			// 将每个需要上传的文件写到服务器对应的文件中
			byte[] buffer = new byte[1024];
			int len = 0;
			while ((len = fis.read(buffer)) > 0) {
				fos.write(buffer, 0, len);
			}
		}
		this.msg = "上传成功!";
		return SUCCESS;
	}

	public String getSavePath() {
		return ServletActionContext.getRequest().getRealPath(savePath);
	}

	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public List<File> getUpload() {
		return upload;
	}

	public void setUpload(List<File> upload) {
		this.upload = upload;
	}

	public List<String> getUploadContentType() {
		return uploadContentType;
	}

	public void setUploadContentType(List<String> uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	public List<String> getUploadFileName() {
		return uploadFileName;
	}

	public void setUploadFileName(List<String> uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

}

  编写struts.xml文件(在你的Tomcat\webapps\下的工程目录中新建文件夹UploadImages):

 

<?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="uploadspace" extends="struts-default">			
		<action name="listupload" class="bag.ListUploadAction">
			<param name="savePath">/UploadImages</param>
			<interceptor-ref name="fileUpload">
				<param name="allowedTypes">
					image/bmp,image/PNG,image/gif,image/JPEG,image/JPG
				</param>
				<param name="maximumSize">12000</param>
			</interceptor-ref>
			<interceptor-ref name="defaultStack" />
			<result name="success">/result.jsp</result>
			<result name="input">/listupload.jsp</result>
		</action>
	</package>
</struts>

    在result.jsp页面中 ,显示${msg};

    结果显示“上传成功!”时,则表示上传成功!在UploadImages里即可找到你刚刚上传的图片。

 

   注:图片上传的关键是xml文件的配置,以及action里的属性与页面name属性的对应。

         如:xml中<param name="savePath">/UploadImages</param>,所谓"/"就必须把UploadImages建在工程的根目录下,要引用fileUpload拦截器,也必须引用默认拦截器defaultStack(注意xml区分大小写);

        而到页面中命名规则是:jsp中有name=xxx的文件上传框,则到action中必须有一个File xxx与之对应,

而图片的名称就必须是xxxFileName,同理图片类型就必须是xxxContentType,这些都是受约束的,基本不变。

        能够注意到这些,图片上传成功就没啥问题了。

1
0
分享到:
评论

相关推荐

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。

    struts2图片上传并预览

    本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件上传基础 1. 添加依赖:在项目中,你需要添加Struts2的核心库和文件上传插件。Struts2的FileUpload插件提供了处理文件上传的功能。确保`...

    swfuplaod+struts2实现多文件上传

    3. **创建Struts2 Action**:在Struts2框架中,创建一个处理文件上传的Action类,该类通常会包含一个`List&lt;HttpServletFileWrapper&gt;`类型的属性,用于接收上传的文件。 4. **编写Struts2配置**:在struts.xml配置...

    struts2 实现文件批量上传

    本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...

    Struts2批量上传

    Struts2框架提供了强大的文件上传支持,使得开发者能够轻松实现批量文件上传功能。本文将深入解析Struts2批量上传机制,包括其工作原理、代码实现细节以及如何在JSP页面和Action层进行集成。 #### 二、Struts2批量...

    Struts2多个文件上传

    本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的依赖库。主要需要两个Apache Commons库:`commons-fileupload-1.2.2.jar`和`...

    java struts2实现文件上传进度条显示

    在Java Struts2框架中实现文件上传进度条显示,主要涉及到的技术点包括Struts2的文件上传、Ajax异步通信以及前端进度条组件的使用。下面将详细讲解这些知识点。 首先,Struts2的文件上传功能是通过Struts2提供的`...

    struts2文件上传下载

    在Struts2框架中实现文件上传和下载功能,是Web开发中常见的需求。Struts2作为一个成熟的MVC框架,提供了简单的API和标记库来处理文件上传下载的业务逻辑。下面是基于给定文件内容的知识点详细说明。 ### Struts2...

    struts2实现多文件上传功能

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

    Struts2框架实现文件上传

    Struts2框架是Java Web...以上就是使用Struts2框架实现文件上传的基本步骤和涉及的知识点。在实际项目中,可能还需要考虑并发处理、性能优化、用户体验等方面的问题,但这些是实现基础功能后需要进一步考虑的扩展内容。

    Struts2实现多文件上传

    在Struts2中,实现多文件上传功能是常见的需求,尤其在处理用户需要上传多个文件的场景下,如上传图片、文档等。本篇文章将详细介绍如何使用Struts2来实现这一功能。 首先,我们需要理解Struts2的上传机制。在...

    struts2文件上传的两种方法

    以上就是Struts2中单文件和多文件上传的基本实现方式及相关知识点。通过这种方式,开发者能够方便地处理用户上传的文件,实现Web应用的各种功能。记得在实际开发中根据项目需求进行相应的优化和安全控制。

    struts2 批量上传 图片+文件

    在Action类中,你需要定义一个`List&lt;ultipartFile&gt;`类型的字段,Struts2会自动将上传的文件绑定到这个字段上。然后,你可以遍历这个列表,对每个文件进行处理,比如保存到服务器的指定目录,或者存储到数据库。 4....

    struts2实现的多个文件上传

    下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传通常通过multipart/form-data编码类型来实现。这种编码方式将表单数据分割成多个部分,每部分包含一个...

    struts2 文件上传 测试通过版

    本文将详细讲解如何在Struts2中实现文件上传功能,并探讨相关知识点。 1. **Struts2 Action类配置**: 在Struts2中,我们需要创建一个Action类来处理用户请求。文件上传时,Action类通常会包含一个或多个`java.io....

    struts2实现文件上传(单个+多个文件上传

    ### Struts2实现文件上传(单个+多个文件上传) #### 一、单个文件上传 在Struts2框架中实现文件上传是一项常见的需求。本文将详细介绍如何在Struts2中实现单个文件的上传。 ##### JSP 页面设计 首先,我们需要在...

    Struts2批量上传文件

    在文件上传场景中,我们通常会使用`CommonsFileUploadInterceptor`拦截器,它是Struts2对Apache Commons FileUpload库的封装,可以处理文件上传请求。 Apache Commons FileUpload是一个用于处理HTTP多部分请求的库...

    Struts2 单个、批量文件上传 精简源码

    而"12Struts2Upload"可能是源代码文件或者一个示例项目,包含了完整的Struts2文件上传的实现。 总的来说,通过Struts2提供的文件上传功能,开发者可以方便地处理用户的文件上传请求,无论是单个文件还是批量文件。...

    Struts2文件上传和下载教程

    在Struts2框架中,实现文件上传主要依赖于表单的`enctype`属性设置为`multipart/form-data`。这种设置允许表单中的文件作为请求的一部分发送到服务器端。 **1.2 enctype详解** - **application/x-...

    struts2文件上传

    在Struts2框架中,文件上传是通过特定的插件和配置实现的,提供了便捷的方式来处理用户提交的文件数据。以下是对Struts2文件上传进行详细解释的知识点: 1. **Struts2文件上传原理**: - Struts2使用Apache的...

Global site tag (gtag.js) - Google Analytics