`
xiaolongfeixiang
  • 浏览: 236799 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Struts2的文件下载(download)

阅读更多

 

Struts2对文件的下载做了很优雅的处理,配置起来很简单,使用也很方便。

 

在本文中,你将学会最基础的download案例,和最优雅的download案例。

 

优雅之处:

 

1、不适用特定的new File加载文件。

2、文件名灵活,无需写死。

3、MimeType灵活,无需写死。

 

如主页的说明--“非技术流”, 表达不精确的地方,各位包涵。废话不说,上货!

 

环境: JDK6update16   EclipseJEE  3.4.2   Struts2.1.8


下载流程概览:

 

HttpRequest  --->   DownloadAction --->  SUCCESS Result -->   输出流

 

STEP01  写一个DownloadAction

package study.action;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import javax.servlet.ServletContext;

import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionSupport;

public class DownloadAction extends ActionSupport implements
		ServletContextAware {
	private static final long serialVersionUID = 1L;

	private ServletContext context;

	private String filename;

	private String mimeType;

	private InputStream inStream;

	@Override
	public String execute() throws Exception {
		mimeType = context.getMimeType(filename);
		return SUCCESS;
	}

	public InputStream getInStream() {
		inStream = context.getResourceAsStream("/doc/" + filename);
		if (inStream == null) {
			inStream = new ByteArrayInputStream("Sorry,File not found !"
					.getBytes());
		}
		return inStream;
	}

	public String getMimeType() {
		return mimeType;
	}

	public void setFilename(String filename) {
		try {
			this.filename = new String(filename.getBytes("ISO8859-1"),"GBK");
		} catch (UnsupportedEncodingException e) {
		}
	}

	public String getFilename() {
		try {
			return new String(filename.getBytes(),"ISO8859-1");
		} catch (UnsupportedEncodingException e) {
			return this.filename;
		}
	}

	@Override
	public void setServletContext(ServletContext context) {
		this.context = context;
	}

}

 

 说明:


1、在下载的Action中,必须有个InputStream类型的field和对应的get方法。


2、下载时方便,将文件名、MIMETYPE都写在了Action中。

 

 

然后,配合Result类型:

		<action name="download" class="study.action.DownloadAction">
			<result type="stream">
				<param name="contentType">${mimeType}</param>
				<param name="inputName">inStream</param>
				<param name="contentDisposition">attachment;filename="${filename}"</param>
			</result>
		</action>
 

最后,看图:


 


 

看看中文问题(具体的解决办法没有,这种只是在我的机子上可以。。。)


 


解释说明:

 

1、为了获取到MIMETYPE,利用了ServletContext的方法。所以必须获得ServlerContext这个对象。本例子中采用DI的方法,有Struts2在运行时注入。


2、为了能在HTTP Response中使用到 MIMETYPE,所以在Action中提供了对应的get方法,以供OGNL表达式需要。

 

 

  • 大小: 20.6 KB
  • 大小: 62.3 KB
分享到:
评论
2 楼 xiaolongfeixiang 2010-05-25  
pouyang 写道
附上程序代码下载那就更完美了!


我是用Eclipse的JEE版本做的,大多数人都是用MyEclipse的,所以可能有些不便。

不过,只需将上述源码加入到你的工程中,struts.xml中配置一下,即可。

呵呵,试试吧
1 楼 pouyang 2010-05-25  
附上程序代码下载那就更完美了!

相关推荐

    Struts的文件下载

    在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...

    struts2实现文件上传下载

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

    Struts2之struts2文件下载详解案例struts012

    在Struts2中处理文件下载是常见的需求,比如用户请求下载服务器上的文件,如PDF、图片或其他类型的文档。本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action...

    struts2文件下载

    此外,Struts2提供了插件机制,如Struts2 File Upload and Download Plugin,可以帮助简化文件下载的实现。这些插件通常提供更高级的功能,如支持大文件下载、断点续传等。 在开发过程中,确保安全是非常重要的。...

    struts2实现文件下载实例源代码

    在Struts2中实现文件下载的功能,可以帮助用户从服务器获取并保存文件到本地计算机,例如这里的"1.xls"文件。下面我们将深入探讨如何在Struts2框架下实现文件下载的实例。 首先,我们需要在项目的Web应用目录结构中...

    struts2文件上传下载

    在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...

    Struts2文件流方式导出下载excel、Txt、image图片

    通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...

    Struts2文件上传与下载

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...

    struts2文件上传与下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...

    基于Struts2的文件上传下载功能的完整源代码。

    在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...

    struts2实现多文件上传下载

    网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...

    JavaEE Struts2文件下载

    JavaEE Struts2框架在开发Web应用时,提供了一种高效、便捷的文件下载功能。在实际项目中,用户可能需要下载服务器上的各种文件,如文档、图片、视频等。Struts2通过Action类和配置文件,实现了这个功能。下面我们将...

    Struts2中文件下载&&zip 文件的压缩

    在Struts2中处理文件下载和压缩功能是常见的需求,这通常涉及到用户请求从服务器获取文件或者打包多个文件为一个ZIP压缩包。下面将详细介绍这两个知识点。 **文件下载** 在Struts2中,文件下载可以通过Action类来...

    Struts 2中实现文件下载

    在Struts 2中,文件下载功能是通过Action和Result类型的组合实现的,允许用户从服务器端下载文件到客户端。以下将详细介绍如何在Struts 2中实现文件下载,特别是处理中文文件名的问题。 首先,你需要创建一个Action...

    struts2中的文件上传和下载示例

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传和下载。在Struts2中处理文件上传和下载是常见的需求,对于构建交互式的Web应用来说至关重要。以下将详细介绍Struts2中如何实现这两个...

    Struts2实现文件的上传下载

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,提供了丰富的功能,包括文件的上传和下载。在本项目中,我们关注的是如何使用Struts2来实现实时的文件交互操作,即文件的上传与...

Global site tag (gtag.js) - Google Analytics