struts2学习笔记之文件下载

简介: 文件下载最重要的是设置响应头: 1 contentType,指定文件的MIME类型,使浏览器获知。如doc文件可以如下设置:application/msword 2 contentDisposition,告知文件名称如:attachment;filename="download.jpg"   其中attachment非常重要,它将指示浏览器文件将作为附件形式下载;     如果没有这一项,浏览器将自己根据contentType进行判断处理:比如text/plain、 text/html 、image/jpg 之类的将被直接显示在浏览器窗口中而不是执行正常的下载。

文件下载最重要的是设置响应头:


1 contentType,指定文件的MIME类型,使浏览器获知。如doc文件可以如下设置:application/msword
2 contentDisposition,告知文件名称如:attachment;filename="download.jpg"

   其中attachment非常重要,它将指示浏览器文件将作为附件形式下载;

    如果没有这一项,浏览器将自己根据contentType进行判断处理:比如text/plain、 text/html 、image/jpg 之类的将被直接显示在浏览器窗口中而不是执行正常的下载。


struts2中实现文件下载非常方便,以下是例子:


Action的实现:
public class DownloadAction extends ActionSupport{
       private String file;   //请求下载的file名称
       public void setFile(String file){
		this.file = file;
	}
	public String execute(){
                //不一定直接返回SUCCESS,可以根据需要进行一些权限验证之类的操作
		return SUCCESS;
	}
	
        //使用该get形式的方法返回一个InputStream,在struts.xml中对应配置上targetFile属性
	public InputStream getTargetFile()throws Exception{
		System.out.println(this.file);
		InputStream is = ServletActionContext.getServletContext().getResourceAsStream(this.file);
		System.out.println(is);
		return is;
	}
}

struts.xml的配置:
<action name="download" class="upload.DownloadAction">
          <!--stream类型 -->
	  <result name="success" type="stream"> 
           <!-- 配置对应的inputstream获取属性-->
	   <param name="inputName">targetFile</param>    
           <!-- 配置contentType -->
	   <param name="contentType">image/jpg</param>
           <!-- 配置contentDisposition,其中attachment很重要-->
	   <param name="contentDisposition">attachment;filename="download.jpg"</param>
           <!-- 写出文件的缓冲大小 -->
	   <param name="bufferSize">4096</param>
	  </result>
</action>

下载页面示例:

<form action="download.action" method="post">
    图片文件路径:<input type="text" name="file" value="/images/flowers.jpg" /><br/>
   <input type="submit" value=“下载"/>
</form>



img_9b09a36f6de95886f52ce82fa1e89c88.jpe

作者: zale

出处: http://www.cnblogs.com/littleatp/, 如果喜欢我的文章,请关注我的公众号

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接  如有问题, 可留言咨询.

目录
相关文章
|
前端开发 数据库
struts2实现的文件上传下载案例(二)、FileUpLoad文件的下载
struts2实现的文件上传下载案例(二)、FileUpLoad文件的下载
110 0
|
Java 开发者
Struts2的文件下载 | 学习笔记
快速学习 Struts2的文件下载,介绍了 Struts2的文件下载系统机制, 以及在实际应用过程中如何使用。
|
Java 开发者
springmvc.实现文件上传|学习笔记
快速学习springmvc.实现文件上传
|
缓存 Java Apache
Struts2实现单文件上传,多文件上传与下载(十)上
Struts2实现单文件上传,多文件上传与下载(十)
253 0
Struts2实现单文件上传,多文件上传与下载(十)上
Struts2实现单文件上传,多文件上传与下载(十)下
Struts2实现单文件上传,多文件上传与下载(十)
220 0
Struts2实现单文件上传,多文件上传与下载(十)下
|
前端开发 应用服务中间件
Struts2实现单文件上传,多文件上传与下载(十)中
Struts2实现单文件上传,多文件上传与下载(十)
107 0
Struts2实现单文件上传,多文件上传与下载(十)中
|
JavaScript 前端开发 应用服务中间件
SpringMVC的单文件上传,多文件上传和下载文件(十二)下
SpringMVC的单文件上传,多文件上传和下载文件(十二)下
298 0
SpringMVC的单文件上传,多文件上传和下载文件(十二)下
|
前端开发 Java 应用服务中间件
SpringMVC的单文件上传,多文件上传和下载文件(十二)上
SpringMVC的单文件上传,多文件上传和下载文件(十二)上
221 0
SpringMVC的单文件上传,多文件上传和下载文件(十二)上