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/, 如果喜欢我的文章,请关注我的公众号

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

目录
相关文章
|
Java 开发者
Struts2的文件下载 | 学习笔记
快速学习 Struts2的文件下载,介绍了 Struts2的文件下载系统机制, 以及在实际应用过程中如何使用。
Struts2实现单文件上传,多文件上传与下载(十)下
Struts2实现单文件上传,多文件上传与下载(十)
214 0
Struts2实现单文件上传,多文件上传与下载(十)下
|
前端开发 应用服务中间件
Struts2实现单文件上传,多文件上传与下载(十)中
Struts2实现单文件上传,多文件上传与下载(十)
104 0
Struts2实现单文件上传,多文件上传与下载(十)中
|
缓存 Java Apache
Struts2实现单文件上传,多文件上传与下载(十)上
Struts2实现单文件上传,多文件上传与下载(十)
247 0
Struts2实现单文件上传,多文件上传与下载(十)上
|
前端开发 JavaScript Java
struts2的文件上传
在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在...
961 0
|
Java
struts2 下载文件
服务端action代码  public String downloadReport() {    try {    String path = new String(filePath.getBytes("ISO-8859-1"),"utf-8");//处理get请求传过来的中文参数乱码,filePath文件路径需要set方法接收页面参数   System.out.println(path)
1586 0
Struts1——文件上传
       在struts1中,框架本身引入commons-fileupload:         只需几行代码+配置,便可以完成文件的上传。      首先使我们form表单里面的配置:   然后在ActionForm中,将我们的input为file的提交项对应为FormFile类型: 在Action中,通过我们的ActionForm就可以直接拿到上传文件的信息,进行存盘,入库等操作。
1016 0