struts2下载文件

原创 2013年12月04日 10:11:02

在网上查了很多,发现很多demo都是使用的struts2标签实现下载的,我自己在这里使用HTML写一个下载,方便自己理解

 

1、下载的链接

<a href="downloadFile.action">下载没有参数</a><br>
<a href="downloadFileparam.action?directory=D:/&filename=log.txt">下载传递参数</a><br>

 

2、配置文件

<!-- 下载文件 -->
<action name="downloadFile" class="downloadFileSpring">
	<param name="directory">C:/dzh/internet/</param>
	<result name="success" type="stream">
		<!-- 指定下载文件的内容类型,text/plain是默认类型 -->
		<param name="contentType">text/plain</param>
		<!--
		inputName默认值是inputStream,如果action中用于读取下载文件内容的属性名是inputStream,那么可以省略这个参数
		-->
		<param name="inputName">inputStream</param>
		<!--静态获取文件名,将文件名写死了即huangbiao.doc-->
		<param name="contentDisposition">
			attachment;filename="huangbiao.doc"
		</param>
		<param name="bufferSize">2048</param>
	</result>
	<result name="input">/WEB-INF/pages/inputError.jsp</result>
</action>

<action name="downloadFileparam" class="hb.ajax.DownloadFileparam">
	<!--默认的路径是c:/dzh/internet,但是如果传递了参数就会被覆盖-->
	<param name="directory">C:/dzh/internet/</param>
	<result name="success" type="stream">
		<!-- 指定下载文件的内容类型,text/plain是默认类型 -->
		<param name="contentType">text/plain</param>
		<!--
		inputName默认值是inputStream,如果action中用于读取下载文件内容的属性名是inputStream,那么可以省略这个参数
		-->
		<param name="inputName">inputStream</param>
		<!--动态获取文件名,从Action中的取得filename-->
		<param name="contentDisposition">
			attachment;filename=${filename}
		</param>
		<param name="bufferSize">2048</param>
	</result>
	<result name="input">/WEB-INF/pages/inputError.jsp</result>
</action>

 

备注:

1、inputName是返回数据流的方法的名称,即配置文件根据它找到对应的方法接受数据流,默认是inputStream,也就是说如果配置文件中没有这个配置,那么在对应的action中要有getInputSteam()方法。 

2、filename=${filename}需要对应的action中有对应的getFilename()方法

3、通过上面的配置文件可以看出,如果想实现全面的动态下载文件,就必须在上传文件的时候讲需要的信息——文件名称、文件类型、文件路径存储到数据库中,这样下载就能保证和上传是一致的(弹出下载对话框)。

 

3、对应的Action

package hb.ajax;

import java.io.FileInputStream;
import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;

public class DownloadFile extends ActionSupport {

	private String filename;
	private String directory;

	public String getFilename() {
		return filename;
	}

	public void setFilename(String filename) {
		this.filename = filename;
	}

	public String getDirectory() {
		return directory;
	}

	public void setDirectory(String directory) {
		this.directory = directory;
	}

	@Override
	public String execute() throws Exception {
		System.out.println("success  ----  jjj");
		return "success";
	}

	public InputStream getInputStream() throws Exception {
		//获取配置文件中的参数值,故打印的结果C:/dzh/internet/
		System.out.println(this.directory);
		//配置文件中没有默认值,故打印的结果为null
		System.out.println(this.filename);
		String dir = directory + "aaa.docx";
		return new FileInputStream(dir); // 如果dir是绝对路径
		// return
		// ServletActionContext.getServletContext().getResourceAsStream(dir);
		// //如果dir是Resource下的相对路径
	}

}

 

package hb.ajax;

import java.io.FileInputStream;
import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;

public class DownloadFileparam extends ActionSupport {

	private String filename;
	private String directory;

	public String getFilename() {
		return filename;
	}

	public void setFilename(String filename) {
		this.filename = filename;
	}

	public String getDirectory() {
		return directory;
	}

	public void setDirectory(String directory) {
		this.directory = directory;
	}

	@Override
	public String execute() throws Exception {
		System.out.println("success  ----  jjj");
		return "success";
	}

	public InputStream getInputStream() throws Exception {
		// 有前端传递过来的参数,将默认的值覆盖了,故打印的结果D:/
		System.out.println(this.directory);
		// 有前端传递过来的参数,故打印的结果为log.txt
		System.out.println(this.filename);
		String dir = directory + this.filename;
		return new FileInputStream(dir); // 如果dir是绝对路径
		// return
		// ServletActionContext.getServletContext().getResourceAsStream(dir);
		// //如果dir是Resource下的相对路径
	}

}

  

 

struts2文件上传下载

  • 2015年02月01日 19:19
  • 879KB
  • 下载

【Struts2】4.文件上传与下载

进行文件上传时,必须将表单的method属性设为post,将enctype属性设为multipart/form-data。 Struts2在进行文件上传操作时,实际上是通过两个步骤实现的: 1) 首...

Struts2下载文件中文乱码处理

  • 2014年10月16日 13:00
  • 1KB
  • 下载

struts2实现文件下载

要下载文件,首先要获取文件列表 创建action public class DownloadAction extends ActionSupport{ private File[] files; ...

struts2实现多文件上传和下载

  • 2015年04月23日 13:57
  • 14.44MB
  • 下载

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

  • 2015年02月06日 00:14
  • 4.18MB
  • 下载

Struts2文件下载遇到中文乱码、中文丢失的解决方法

Struts2文件下载遇到中文乱码、中文丢失的解决方法

文件上传下载【struts2】

  • 2016年02月27日 13:42
  • 4.73MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2下载文件
举报原因:
原因补充:

(最多只允许输入30个字)