`

Struts2的一个和多个文件上传的实现

阅读更多

在Struts2中,上传文件时,只要使用java.io.File类来描述上传文件即可,比直接使用Commons-FileUpload组件要简单的多。

上传单个文件:

如果上传的是单个文件,则在Action类中定义一个File类型的变量。该变量的名字与JSP页面上的<input />标签的name属性相对应,只有这样Struts2才能使客户端上传的文件自动与Action类中的相应的属性进行关联处理。

上传多个文件:

如果上传的是多个文件,这时在JSP页面中的所有的<input type="file" name="upload" />标签的name属性值都必须相同,这时Action中相对应的属性就要使用List或File[]用来表示多个文件的信息。

保存文件相关属性的变量设置如下:

private List<File> upload;   //保存上传的文件
private List<String> uploadContentType;	 //保存上传的文件类型
private List<String> uploadFileName;   //保存上传的文件名

以下是一个使用Struts 2上传多个文件的例子,把上传的文件重新用生成的随机数命名:

Struts2上传文件相关代码
public class UploadFilesAction extends ActionSupport {

	private List upload;
	private List uploadContentType;
	private List uploadFileName;
	private String uploadPath;
	private String result;
	private boolean success;
	private String msg;
	public boolean isSuccess() {
		return success;
	}
	public String getMsg() {
		return msg;
	}
	public String getResult() {
		return result;
	}
	public void setUpload(List upload) {
		this.upload = upload;
	}
	public void setUploadContentType(List uploadContentType) {
		this.uploadContentType = uploadContentType;
	}
	public void setUploadFileName(List uploadFileName) {
		this.uploadFileName = uploadFileName;
	}
	public void setUploadPath(String uploadPath) {
		this.uploadPath = uploadPath;
	}
	public String execute() throws Exception {
		for (int i = 0; i < uploadFileName.size(); i++) {
                        Random random = new Random();
                        String filename = uploadFileName.get(i);                         
                        //把上传的文件用生成的随机数重新命名
                        //并判断生成的文件名是否已经存在
                        //如果存在,则继续生成随机数命名,直到找打还没使用的随机数为止
                        filename = uploadPath + random.nextLong()
                                + filename.substring(filename.lastIndexOf("."));
                        while (new File(filename).exists()) {
                            filename = uploadPath + random.nextLong()
                                    + filename.substring(filename.lastIndexOf("."));
                        }
                        FileOutputStream fos = new FileOutputStream(filename);
                        InputStream is = new FileInputStream(upload.get(i));
                        byte[] buffer = new byte[8192];
                        int count = 0;
                        while ((count = is.read(buffer)) > 0) {
                            fos.write(buffer, 0, count);
			}
			fos.close();
			is.close();
		}
		success=true;
		msg = "文件上传成功!";
		return "result";
	}
}
在struts.xml文件中可做如下配置:
<package name="struts2" namespace="/" extends="struts-default">
	<action name="uploadFiles"
            class="uploadtest.actions.UploadFilesAction">
		<result name="result">/WEB-INF/result.jsp</result>
		<param name="uploadPath">D:\UploadFiles\</param>
	</action>
</package>
分享到:
评论

相关推荐

    Struts2多个文件上传

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

    struts2实现的多个文件上传

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

    struts2实现多文件上传下载

    1.能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.能够对上传路径进行配置文件指定(upload.properties),使用了一些类似单例模式的静态代码块 3.Struts2进行下载处理,能对上传的所有...

    Struts2实现单个文件多个文件上传与下载-多个拦截器

    本项目主要展示了如何在Struts2框架下实现单个文件和多个文件的上传及下载,并且运用了多个拦截器来增强功能和安全性。 首先,让我们详细了解一下文件上传的过程。在Struts2中,文件上传主要依赖于`struts2-...

    struts2实现文件上传下载

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

    swfuplaod+struts2实现多文件上传

    SWFUpload 是一款开源的Flash上传组件,...通过上述步骤和注意事项,你可以利用SWFUpload和Struts2构建一个功能强大且安全的多文件上传功能。在实际项目中,根据需求进行适当的定制和优化,以满足用户需求和系统安全。

    struts2实现多文件上传功能

    通过组合使用Struts2的配置、Action类和HTML表单,我们可以轻松地处理多个文件的上传操作。这个过程中的关键知识点包括:Struts2拦截器、文件上传配置、Action类设计、HTML表单的构建以及服务器端的文件处理逻辑。

    Struts2实现文件上传

    Struts2是一个强大的MVC框架,广泛应用于Java Web开发中,尤其在处理用户表单提交和文件上传等交互场景中表现出色。在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的...

    struts2 实现文件批量上传

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

    Struts2实现多文件上传

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

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

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

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

    总之,这个实例提供了关于Struts1中文件上传和复杂表单数据处理的实战经验,对于学习Java Web开发和Struts1框架的开发者来说,这是一个非常有价值的参考。通过实际操作和调试,可以加深对Struts1处理文件上传和复杂...

    Struts2实现Uploadify多文件上传

    这个Action类需要继承`org.apache.struts2.dispatcher.multipart.MultiPartRequest`,以便处理多个文件。同时,定义相应的私有属性,这些属性将用于接收上传的文件,并使用`@RequestParam`注解进行注解。 2. **...

    struts实现的文件上传下载功能

    总结起来,使用Struts实现文件上传下载涉及前端表单设计、后端处理逻辑、文件存储策略以及安全控制等多个方面。在实践中,我们还需要考虑到性能优化和用户体验提升,例如使用异步上传、进度条展示等技术。

    struts2文件上传和下载

    1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供的组件,专门处理HTTP请求中的多部分数据,包括文件。首先,需要在Struts2配置文件中添加相关的拦截器,如`params`和`...

    struts1和struts2分别实现文件上传下载功能

    Struts1和Struts2是两个非常著名的Java Web框架,它们都提供了处理文件上传和下载的功能,但实现方式有所不同。本文将深入探讨这两个框架在文件操作方面的具体实现。 首先,让我们了解一下Struts1中的文件上传功能...

    struts2多文件的上传

    在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...

    struts2文件上传jar

    这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...

    struts2框架下的文件上传

    Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、文件上传等。在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。...

Global site tag (gtag.js) - Google Analytics