struts 文件下载

文件下载步骤:

(1)获取要下载的文件的文件名.对其进行编码处理,因为文件上传默认是get提交

(2)文件下载提交的业务方法

(3)返回文件流的方法

(4)下载显示的文件名

文件下载列表:

<body>
    <table border="1">
    <tr>
  			<td>编号</td>
  			<td>文件名</td>
  			<td>操作</td>
  		</tr>
    	<c:forEach items="${fileNames}" var="fileName" varStatus="v">
	    	<tr>
	    		<td>${v.count}</td>
	    		<td>${fileName}</td>
	    		<td>
	    			<c:url var="url" value="down_down">
	    				<c:param name="fileName" value="${fileName }"></c:param>
	    			</c:url>
	    			<a href="${url}">下载</a>
	    		</td>
	    	</tr>
    	</c:forEach>
    </table>

文件下载使用到的action类

package cn.itcast.download;

import java.io.File;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
public class DownloadAction extends ActionSupport{
	public String list(){
		//得到目标中的文件
		String path = ServletActionContext.getServletContext().getRealPath("/upload");
		File file=new File(path);
		String[] fileNames = file.list();
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("fileNames", fileNames);
		return "list";
	}
	//文件下载的步骤
	//1.获取要下载的文件的文件名
	private String fileName;
	public void setFileName(String fileName) {
		//处理传入的参数中文问题(默认是get提交)
		try {
			fileName=new String(fileName.getBytes("ISO8859-1"),"UTF-8");
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException(e);
		}
		this.fileName = fileName;
	}
	//2.下载提交的业务方法
	public String down(){
		return "download";
	}
	//3.返回文件流的方法
	public InputStream getAttrInputStream(){
		return ServletActionContext.getServletContext().getResourceAsStream("/upload/"+fileName);
	}
	//4.下载显示的文件名
	public String getDownFileName(){
		try {
			fileName=URLEncoder.encode(fileName,"utf-8");
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException(e);
		}
		return fileName;
	}
}<strong>
</strong>

struts配置文件:要和action类中的方法名对应

<struts>
	<package name="down" namespace="/" extends="struts-default">
		<action name="down_*" class="cn.itcast.download.DownloadAction" method="{1}">
			<result name="list">/{1}.jsp</result>
			<result name="download" type="stream">

				<!-- 运行下载的文件的类型:指定为所有的二进制文件类型 -->
			   <param name="contentType">application/octet-stream</param>

			   <!-- 对应的是Action中属性: 返回流的属性【其实就是getAttrInputStream()】 -->
			   <param name="inputName">attrInputStream</param>

			   <!-- 下载头,包括:浏览器显示的文件名 -->
			   <param name="contentDisposition">attachment;filename=${downFileName}</param>

			 	<!-- 缓冲区大小设置 -->
			   <param name="bufferSize">1024</param>
			</result>
		</action>

	</package>
</struts>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 12:11:16

struts 文件下载的相关文章

struts 文件下载 annotation 注解版

[本文简介] 本文将简单介绍使用 struts2 ,通过零配置和 annotation 实现文件下载功能. [文件夹结构] [web.xml有关struts的配置] <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

Struts文件下载

前三个动态提供 一般后面的两个就是用struts预设 1024b 即2Kb contentType="text/html"; contentDisposition="attachment;filename=date.html"; ServletContext context=ServletActionContext.getServletContext(); String fileName=context.getRealPath("/files/date.h

Struts文件下载具体解释

在做项目中上传下载肯定是少不了的,本博文对struts2的下载进行解释并附上部分代码 1.action类 public class FileDownLoadAction extends ActionSupport{ private String filename;//下载文件的名称 @Override public String execute() throws Exception { return SUCCESS; } //下载源 public InputStream getInputStre

Struts文件下载(静态)

前言:在实际的开发中,我们可能需要动态下载和静态下载, 动态下载:例如我上传了一个文件,你想下载,那就必须动态生成下载链接,因为我服务器一开始是不知道我上传的东西是什么,放在那里, 静态下载:比如一些网站一些固定的资源,提供给我们下载 这里我写的是关于静态的下载实现流程:第一步: 编写Action类,响应下载的的超链接: 1)声明contentType(文件类型)contentLength( 下载的文件的长度)contentDisposition(响应信息的类型)这三个属性,并提供这三个属性的s

Struts1.3——文件上传和下载

1.Struts文件上传 在Web开发中,会经常涉及到文件的上传和下载,比如在注册账户的时候,我们需要上传自己的头像等. 我们可以利用Struts很方便地实现文件的上传. 1.1 开发步骤 现在,假设我们要在注册的时候上传自己的头像.新建项目名称为StrutsFileUpAndDown,并引入Struts1.3 (1)首先,写注册的JSP页面register.jsp 它的body内容如下: <body> <h1>注册用户</h1> <% --如果表单有文件控件,则

4、struts2 文件上传下载

1.文件上传 struts提交的文件组件上传, 前台: 1.提交方式POST 2.表单类型 multipart/form-data 3.input type=file 后台: Apache提供的FileUpload组件 核心类: FileItemFactory FileItem的工厂 ServletFileUpload servlet 中的文件上传的核心类 FileItem 封装了上传的表单文件项的信息 总之 文件上传,处理起来比较麻烦 Struts的文件上传 文件上传拦截器帮助我们晚场了文件上

走进Struts2(六)— 文件上传和下载

一.文件上传 实现文件上传的方式有很多种,比如Apache的Common-FileUpload,但是实现起来非常的繁琐,而Struts2来实现文件上传则简单的多,默认也是基于Common-FileUpload的方式. 1.使用Struts2来实现文件上传,需要使用Struts2预定义的fileUpload拦截器,defaultStack拦截器栈引用了fileUpload拦截器:最后,struts-default包又将defaultStack拦截器声明为自己的默认拦截器引用.使用defaultSt

java/struts/Servlet文件下载与ftp文件下载

1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!downloadFile.action?transUrl=ftp://10.0.2.1/tazi/a.xml">请点击下载</a> 2.后台代码 Action或Servlet String s1=transUrl; // transUrl是前台接受的参数 s1=s1.substring(6); s

struts中日期处理以及文件下载

日期处理 对于jsp提交的基本数据类型和日期格式为yyyy-MM-dd的自动转换为相应的 对于其它的日期格式需要自定义转换器 局部类型转换器 1,写转换器类(继承StrutsTypeConverter) 2,配置转换器类 在同包的action下新建一个peoperties文件 命名格式为actionClassName-conversion.properties   举例:com.Liyb/UserAction-conversion.properties 3,内容 user.birth=转换器类全