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实现下载文件

Struts2框架和文件下载有关的类是org.apache.struts2.dispatcher.StreamResult,这个类的一些成员变量和下载有关,看源码 //下载文件的类型 pro...
  • wnl_csdn
  • wnl_csdn
  • 2016年08月12日 16:44
  • 3694

struts2下实现文件下载功能

struts2下实现文件下载功能 下面以实现一个图片下载功能为例: 1. 项目结构 2. web.xml ...
  • wangcunhuazi
  • wangcunhuazi
  • 2014年11月16日 11:59
  • 4037

Struts2下载文件时的Action的配置

struts.xml文件配置: [html] view plain copy span style="font-size:16px;">xml ve...
  • zhangqun23
  • zhangqun23
  • 2016年06月14日 20:37
  • 679

解决struts2在(IE,Firefox)下载文件名乱码问题

String _filename = ""; HttpServletRequest request = ServletActionContext.getRequest();        String...
  • diquren
  • diquren
  • 2015年05月30日 14:54
  • 658

struts2注解实现文件下载

Struts2的配置就不讲了,重点讲下Action的写法。 DownloadAction.java: package com.zrar.cms.action.front.suqiu.soft; i...
  • shiyuezhong
  • shiyuezhong
  • 2012年09月27日 10:08
  • 8221

使用Struts 2框架实现文件下载

从服务器发送一个文件到浏览器需要以下几个步骤 把HTTP响应里的ContentType标头设置为被下载文件的内容类型。ContentType标头的作用是表明数据包里的数据是什么类型, 它由一个多...
  • xyw591238
  • xyw591238
  • 2016年07月19日 10:50
  • 8259

struts2 批量下载(转载)

设计思路:前台jsp页面form 传参传文件路径,多文件的话,将这些文件路径用分隔符拼接,后台分割这些文件路径,然后将这些文件路径下的文件打包,然后在下载。总体来说三步走,上传文件(路径),文件打包,...
  • switch520
  • switch520
  • 2011年05月20日 08:54
  • 3052

struts 2 实现文件下载 中文乱码问题

struts2 实现文件下载中文乱码问题
  • qiotn
  • qiotn
  • 2015年07月30日 14:09
  • 1345

老生常谈:struct2文件下载(带点击取消出现的异常解决办法)

网上关于Struts2文件下载的文章太多了,但
  • xiangchengguan
  • xiangchengguan
  • 2014年10月07日 22:26
  • 1392

struts2文件下载及文件名中文问题

1. struts2配置文件: testStream application/octet-stream;charset=GBK
  • ChiXueZhiHun
  • ChiXueZhiHun
  • 2015年12月07日 13:48
  • 1300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2下载文件
举报原因:
原因补充:

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