`

Struts2上传文件通过配置文件实现文件过滤

阅读更多

客户端端jsp请求
<%@ page contentType="text/html; charset=GBK" language="java"
	errorPage=""%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>使用List上传多个文件</title>
		<meta name="website" content="http://www.crazyit.org" />
	</head>
	<body>
		<span style="color: red"><s:fielderror />
		</span>
		<form action="upload.action" method="post"
			enctype="multipart/form-data">
			文件标题:
			<input type="text" name="title" />
			<br />
			选择第一个文件:
			<input type="file" name="upload" />
			<br />
			选择第二个文件:
			<input type="file" name="upload" />
			<br />
			选择第三个文件:
			<input type="file" name="upload" />
			<br />
			<input value="上传" type="submit" />
		</form>
	</body>
</html>
 


Action处理
package lee;


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

import javax.servlet.ServletContext;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class UploadAction extends ActionSupport implements 
ServletContextAware {
	private String title;
	//使用File数组封装多个文件域对应的文件内容
	private List<File> upload;
	//使用字符串数组封装多个文件域对应的文件类型
	private List<String> uploadContentType;
	//使用字符串数组封装多个文件域对应的文件名字
	private List<String> uploadFileName;
	
	private ServletContext content;
	
	@Override
	public String execute() throws Exception
	{
		//取得需要上传的文件数组
		List<File> files = getUpload();
		//遍历每个需要上传的文件
		for (int i = 0 ; i < files.size() ; i++)
		{
			//以服务器的文件保存地址和原文件名建立上传文件输出流
			FileOutputStream fos = new FileOutputStream(content.getRealPath("/upload")
					 + "\\" + 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);
			}
			fos.close();
		}
		return SUCCESS;
    }
	
	//title属性的setter和getter方法
	public void setTitle(String title)
	{
		this.title = title;
	}
	public String getTitle()
	{
		return this.title;
	}
	//upload属性的setter和getter方法
	public void setUpload(List<File> upload)
	{
		this.upload = upload;
	}
	public List<File> getUpload()
	{
		return this.upload;
	}
	//uploadContentType属性的setter和getter方法
	public void setUploadContentType(List<String> uploadContentType)
	{
		this.uploadContentType = uploadContentType;
	}
	public List<String> getUploadContentType()
	{
		return this.uploadContentType;
	}
	//uploadFileName属性的setter和getter方法
	public void setUploadFileName(List<String> uploadFileName)
	{
		this.uploadFileName = uploadFileName;
	}
	public List<String> getUploadFileName()
	{
		return this.uploadFileName;
	}
	public ServletContext getContent() {
		return content;
	}
	public void setContent(ServletContext content) {
		this.content = content;
	}
	public void setServletContext(ServletContext content) {
		this.content = content;
	}
}
 


struts.xml实现过滤,使用拦截器
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
	"http://struts.apache.org/dtds/struts-2.1.dtd">	
<struts>
	<!-- 指定国际化资源文件的baseName为globalMessages -->
	<constant name="struts.custom.i18n.resources"
		value="globalMessages"/>
	<!-- 设置该应用使用的解码集 -->
	<constant name="struts.i18n.encoding" value="UTF-8"/>
	<package name="lee" extends="struts-default">
		<!-- 配置处理文件上传的Action -->
		<action name="upload" class="lee.UploadAction">
			<!-- 配置fileUpload的拦截器 -->
			<interceptor-ref name="fileUpload">
				<!-- 配置允许上传的文件类型 -->
				<param name="allowedTypes">image/bmp,image/png,
					image/gif,image/jpeg</param>
				<!-- 配置允许上传的文件大小 -->
				<param name="maximumSize">2000000</param> 
			</interceptor-ref> 
			<!-- 配置系统默认的拦截器 -->
			<interceptor-ref name="defaultStack"/>
			<!-- 动态设置Action的属性值 
			<param name="savePath">/upload</param>-->
			<!-- 配置input逻辑视图对应的视图页面 -->
			<result name="input">/upload.jsp</result>
			<!-- 配置Struts 2默认的视图页面 -->
			<result>/succ.jsp</result>	
		</action>
	</package>
</struts>
 


写messageResouce.properties文件



 

  • 大小: 36.5 KB
  • 大小: 83 KB
  • 大小: 101.9 KB
  • 大小: 24.2 KB
  • 大小: 27 KB
分享到:
评论

相关推荐

    Struts2 上传文件(带过滤文件类型和大小)

    首先,我们需要在`struts.xml`配置文件中启用文件上传功能,并指定允许的最大文件大小: ```xml &lt;constant name="struts.multipart.maxSize" value="10485760"&gt;&lt;/constant&gt; &lt;!-- 单位为字节,10MB --&gt; ``` 接着,...

    基于struts2的文件上传+过滤器

    通过以上步骤,你就可以在Struts2中实现文件上传并使用过滤器限制文件类型了。注意,这只是一个基础示例,实际应用中可能需要考虑更多细节,如多文件上传、错误处理、文件重命名、存储路径管理等。在进行文件上传时...

    struts2中文件上传过滤codeFilter

    在Struts2框架中,文件上传是一个常见的功能,它允许用户通过Web应用程序上传文件到服务器。`codeFilter`在此上下文中通常是指一个自定义过滤器,用于在文件上传过程中进行额外的安全检查或处理。这个过滤器可以防止...

    struts2实例 自定义过滤器 文件上传下载 登录功能

    创建自定义过滤器需实现`Filter`接口,并在`web.xml`配置文件中声明。在本实例中,可能包含一个用于处理特定请求或者对用户身份验证的过滤器。 接着,我们来看文件上传下载功能。在Struts2中,文件上传主要依赖于...

    struts2文件上传的两种方法

    3. **Action配置**:在Struts2的配置文件(struts.xml)中,定义一个处理文件上传的Action,指定`params`拦截器,确保表单数据能被正确解析。 4. **处理文件**:在Action类中,使用`CommonsFileUpload`库(Apache ...

    struts2上传文件需要的jar包

    总的来说,`commons-fileupload-1.2.1.jar` 和 `commons-io-1.4.jar`是实现Struts2文件上传功能的基础,它们提供了解析、存储和操作上传文件的核心功能。理解并熟练运用这两个库,可以有效地进行文件上传操作,并...

    简单易懂的struts2文件上传

    通过以上步骤,你可以在Struts2中实现一个简单的文件上传功能。在实际开发中,你可能需要根据项目需求进行相应的扩展和优化,例如使用拦截器来处理全局的上传策略,或者集成第三方库进行更复杂的文件管理。

    Struts2实现Uploadify多文件上传

    Struts2是一个强大的MVC...通过以上步骤,我们可以利用Struts2和Uploadify实现多文件上传功能,为用户提供友好的上传体验,同时确保服务器端能正确处理和存储上传的文件。在实际项目中,应根据具体需求进行定制和优化。

    在Struts 2中实现文件上传

    `CommonsFileUpload`通过将HTTP请求中的数据部分保存到服务器端的临时文件夹中,再由Struts 2框架的`fileUpload`拦截器处理这些临时文件,将其绑定到Action类的相应属性上,从而实现了对上传文件的处理。 #### 具体...

    struts2上传文件

    在Struts2中,文件上传功能是一项常用的功能,允许用户通过Web表单上传文件到服务器。这篇博客文章(遗憾的是,由于没有直接提供具体内容,我无法提供更详细的博客内容摘要),可能详细介绍了如何在Struts2框架中...

    struts2_uploadify带进度条的多文件上传下载

    3. 配置文件:如struts.xml,配置Struts2的动作映射和结果类型,确保上传请求能被正确路由到对应的Action。 4. Servlet或Filter:可能用于处理文件上传的细节,如设置最大文件大小限制、处理多部分请求等。 5. 下载...

    struts1的文件上传

    配置文件中可以指定上传文件的存储路径,例如在struts-config.xml中定义一个action-mapping,设置其`parameter`属性为文件上传的目录。为了更好地管理上传的文件,可以考虑创建多级目录结构,如按照日期或用户ID来...

    struts2上传下载项目

    - 首先,要在`struts.xml`配置文件中启用文件上传支持,通过`&lt;constant&gt;`标签设置`struts.multipart.parser`为`jakarta`,并指定上传文件大小的限制。 - 创建一个Action类,该类通常会有一个字段类型为`File`或`...

    java结合struts的上传下载文件

    1. **配置Struts2核心配置文件**: 在`struts.xml`中添加上传配置,声明一个`action`用于处理文件上传请求。例如: ```xml &lt;result name="success"&gt;/uploadSuccess.jsp ``` 其中`fileUploadStack`是...

    struts2 文件上传源码

    Struts2允许在配置中设置最大上传文件的大小。 8. **文件类型检查**:应用可能需要限制可上传的文件类型。这可以通过在Action类中实现校验逻辑,或者使用过滤器进行。 9. **文件处理**:在Action类的业务方法中,...

    Struts2文件上传和下载教程

    **4.3 使用Struts2实现文件下载** Struts2提供了内置的支持来实现文件下载,通过配置`&lt;result&gt;`元素的类型为`stream`来指定下载行为。 ```xml &lt;param name="contentType"&gt;application/octet-stream ...

    struts2多文件上传

    Struts2提供了一些内置的拦截器,如SizeValidatorInterceptor和FileUploadInterceptor,可以用来限制上传文件的大小和类型。 7. **进度条显示**:为了让用户体验更好,可以使用JavaScript或jQuery库(如jQuery-File...

    struts2中的文件上传和下载

    在Struts2中可以通过配置文件上传拦截器(`fileUpload`)来实现对上传文件的大小限制以及文件类型的过滤。在`struts.xml`配置文件中添加如下配置: ```xml &lt;param name="maximumSize"&gt;2MB&lt;/param&gt; &lt;!-- 最大文件...

    Struts2实现上传功能源码

    在本案例中,我们关注的是如何使用Struts2实现文件上传的功能,这在许多Web应用中都是一个常见的需求,比如用户上传头像、提交文档等。 首先,理解上传功能的基本原理。在HTTP协议中,文件上传通常通过表单的POST...

    struts2上传文件需要的Jar

    在Struts2中,文件上传是一个常见的功能,它允许用户通过表单上传文件到服务器。为了实现这一功能,开发者通常需要依赖一些特定的库,如`commons-fileupload`和`commons-io`。下面我们将详细探讨这两个关键的Java库...

Global site tag (gtag.js) - Google Analytics