`
chenguanwei2008
  • 浏览: 121139 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

使用Struts2进行文件上传

阅读更多

Struts2默认采用Jakarta的Common-FileUpload文件上传框架,因此我们需要在应用中添加两个jar包:commons-io-1.4.jar和commons-fileupload-1.2.1.jar。

假设文件上传页面为:

 

<s:form action="upload.action" method="post" enctype="multipart/form-data">
  		<s:textfield label="文件标题" name="title"/>
  		<s:file label="选择文件" name="upload"></s:file>
  		<s:submit value="上传"/>
 </s:form>

 

 在Action中,我们需要3个属性来封装文件域的信息:

 

  1. 类型为File的xxx属性,封装该文件域对应的文件内容。
  2. 类型为String的xxxFileName属性,封装文件域对应文件的文件名。
  3. 类型为String的xxxContentType属性,封装了该文件域对应文件的文件类型。
UploadAction代码如下:
package com.test.action;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
	//封装文件标题请求参数的属性
	private String title;
	//封装上传文件域的属性
	private File upload;
	//封装上传文件类型的属性
	private String uploadContentType;
	//封装上传文件名的属性
	private String uploadFileName;
	
	//接受依赖注入的属性,文件保存路径
	private String savePath;
	//允许上传的文件类型
//	private String allowTypes;
	
	@Override
	public String execute() throws Exception {
		
		//先判断文件上传类型
//		String filterResult = filterType(getAllowTypes().split(","));
//		if(filterResult != null){
//			ActionContext.getContext().put("typeError","您要上传的文件类型不正确");
//			return filterResult; //filterResult此时等于input
//		}
		if(getUpload() == null) {
			ActionContext.getContext().put("typeError","您要上传的文件类型不正确");
			return INPUT;
		}
			
		
		//以服务器的文件保存地址savePath和原文件名建立上传文件输出流
		FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + getUploadFileName());
		//以上传文件建立一个文件上传流
		FileInputStream fis = new FileInputStream(getUpload());
		//将上传文件的内容写入服务器
		byte[] buffer = new byte[1024];
		int len = 0;
		while((len = fis.read(buffer)) > 0) {
			fos.write(buffer,0,len);
		}
		// TODO Auto-generated method stub
		return SUCCESS;
	}

//	public String getAllowTypes() {
//		return allowTypes;
//	}
//
//	public void setAllowTypes(String allowTypes) {
//		this.allowTypes = allowTypes;
//	}

	public String getSavePath() throws Exception {
		//获取上传路径
		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 File getUpload() {
		return upload;
	}
	public void setUpload(File upload) {
		this.upload = upload;
	}
	public String getUploadContentType() {
		return uploadContentType;
	}
	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}
	public String getUploadFileName() {
		return uploadFileName;
	}
	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}
	
	/**
	 * 过滤文件类型
	 * @param types 系统所有允许上传的文件类型
	 * @return 如果上传文件的类型符合要求,返回null,否则返回input字符串
	 */
	public String filterType(String[] types) {
		//得到上传文件的类型
		String fileType = getUploadContentType();
		//遍历允许上传的文件类型,并判断是否允许上传
		for(String type : types) {
			if(type.equals(fileType))
				return null;
		}
		return INPUT;
	}
}

 然后在struts.xml文件中进行配置:
<action name="upload" class="com.test.action.UploadAction">
			<!-- 配置fileUpload的拦截器 -->
			<interceptor-ref name="fileUpload">
				<param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param>
				<param name="maximumSize">102400</param>
			</interceptor-ref>
			<!-- 如果需要使用文件上传拦截器来过滤文件大小或者过滤文件内容,则必须显式配置引用Struts默认拦截器栈 -->
			<interceptor-ref name="defaultStack"/>
			<param name="savePath">/upload</param>
			<!--  
			<param name="allowTypes">image/bmp,image/png,image/gif,image/jpeg</param>
			-->
			<result>success.jsp</result>
			<result name="input">upload.jsp</result>
</action>
 

 

分享到:
评论

相关推荐

    struts2实现文件上传下载

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

    Struts2多个文件上传

    Struts2对这些库进行了封装,使得文件上传的代码更加简洁,同时减少了不同上传任务之间的编程差异。 在进行文件上传时,HTML表单需要设置`enctype="multipart/form-data"`,这是为了指示浏览器以二进制流的形式发送...

    struts2文件上传下载源代码

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

    struts2上传文件需要的jar包

    在使用Struts2进行文件上传时,需要依赖两个关键的第三方库:`commons-fileupload-1.2.1.jar` 和 `commons-io-1.4.jar`。这两个库在文件上传过程中扮演着至关重要的角色。 首先,`commons-fileupload-1.2.1.jar` 是...

    struts2 实现文件批量上传

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

    swfuplaod+struts2实现多文件上传

    结合Struts2,一个流行的Java Web框架,可以构建出高效、用户友好的文件上传功能。下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用...

    JavaEE Struts文件上传

    2. **添加Struts2插件**:Struts2的文件上传功能依赖于`struts2-convention-plugin`和`struts2-core`等库。在`struts.xml`配置文件中,需要启用Multipart解析器,例如添加`&lt;constant name="struts.multipart.parser...

    struts2上传文件源代码

    在这个“struts2上传文件源代码”中,我们将深入探讨Struts2如何实现文件上传功能,以及涉及到的相关知识点。 首先,文件上传是Web应用中常见的功能,它允许用户从本地计算机选择文件并将其发送到服务器。在Struts2...

    struts2实现多文件上传下载

    2.能够对上传路径进行配置文件指定(upload.properties),使用了一些类似单例模式的静态代码块 3.Struts2进行下载处理,能对上传的所有文件进行下载(多个) 4.文件保存的名称UUID生成,不过显示并下载的名称都是原...

    struts2文件上传例子.rar

    在“struts2文件上传例子.rar”这个项目中,开发者已经使用Struts2.0框架实现了一个简单的文件上传功能。MyEclipse 6.6是一个集成开发环境,支持Java EE项目开发,可以直接导入该项目进行运行和调试。 首先,我们...

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

    为了支持文件上传,我们需要创建一个继承自`org.apache.struts2.dispatcher.multipart.MultiPartRequest`的Action类,或者使用Struts2提供的`org.apache.struts2.views.util.DefaultMultiPartRequest`。这个类可以...

    Struts2实现文件上传

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

    struts2文件上传

    Struts2 文件上传是Web开发中的一个重要功能,它允许用户从他们的本地计算机向服务器传输文件。在Struts2框架中,文件上传是通过特定的拦截器实现的,这些拦截器处理了文件上传请求并提供了安全性和大小限制。下面将...

    使用Struts2实现文件上传和下载的所有方案

    在本文中,我们将深入探讨使用Struts2实现文件上传和下载的各种方案。 ### 文件上传方案 #### 1. 使用Struts2进行文件普通上传 文件上传的核心是处理`multipart/form-data`类型的表单数据。Struts2通过`Struts2-...

    struts2框架下的文件上传

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

    struts2文件上传jar

    2. **上传组件**:Struts2使用Apache Commons FileUpload库来处理文件上传。这个库负责解析请求中的多部分数据,将文件内容分离出来。`commons-fileupload.jar` 是这个库的实现,它包含了处理文件上传的基本类和接口...

    Struts2 文件上传下载代码 Struts2

    在使用Struts2进行文件上传前,需要在struts.xml配置文件中添加对应的拦截器,例如`params`和`fileUpload`拦截器,确保文件数据能够正确地被解析。 3. **Action类处理**: 创建一个Action类,用于接收上传的文件...

    Struts2上传文件(直接用request)

    Struts2上传文件(直接用request)

    struts2文件上传实例

    1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`&lt;result&gt;`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...

    Struts2文件上传源码

    对于更复杂的需求,可以利用Struts2的拦截器和插件来扩展功能,或者考虑使用其他专门处理文件上传的库,如Spring MVC的`MultipartFile`。理解源码有助于你更好地掌握Struts2的工作原理,从而在遇到问题时能更高效地...

Global site tag (gtag.js) - Google Analytics