上一篇学习了文件的上传(点击链接进入:),今天花了点时间学习了一下文件的下载.
(一):首先要学习Stream类,因为Struts2提供了stream的结果类型(可以在struts.xml的result的type属性进行配置),这个结果类型就是专门用来支持文件下载功能的,指定这个stream的时候,同时附带需要在param中指定一些参数:
例如:inputStream这个参数,这个是指定了一个输入流,这就是文件下载的一个入口.
让我们一起来看下Stream这个类:
当我们配置了stream的时候,需要指定一些参数(但只要指定一些必须的例如:inputName,contentDisposition )
- contentType:指定这个输入流的类型
- contentLength:指定输入流的长度
- contentDisposition :指定下载的文件名字,其中下载的时候,默认为inline,此时浏览器判断时候可以直接打开, 如果不可以,会用下载器去下载下来.attachment;filename="xxxx.xx".
- inputName:指定被下载文件的入口的输入流
- bufferSieze:下载的时候的缓冲区的大小
- allowCaching:是否允许支持缓存
- contentCharSet:下载的文件的内容的编码格式
上面的那些参数的的意思,是我自己看文档的一个小理解吧,可能理解的不太准确(初学这些东西),看到了错误希望大家提出来,我再去好好修改一下。
看下文档中给出的对于上述参数的配置的例子:
(二)下面直接看个文件下载的小例子
①:处理文件下载的Action类:
package com.jiangqq.action; import java.io.InputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; //进行文件下载处理的Action类 public class DownLoadAction1 extends ActionSupport { private String filename; public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } //把要进行下载的文件以流的形式返回 //这个方法命名有点规则,可以进行getXXXXX(),但是后面的XXXX会在struts.xml中会用到,稍后会讲到 public InputStream getDownloadFile() { return ServletActionContext.getServletContext().getResourceAsStream( "/upload/TestSyncListView.rar"); } @Override public String execute() throws Exception { return SUCCESS; } }
②:struts.xml的配置文件:
/fileuploadResult.jsp attchament;filename=${filename} downloadFile
③:另外的显示下载文件信息的jsp文件就不贴了,具体可以去点击下面的代码的下载链接
以上就是关于文件下载的一个简要介绍了,继续对此的深入学习.
学习笔记有些地方如果总结的不合理有错误,希望大家能够给我留言提出来,我会尽快改过来的.谢谢.
有兴趣大家一起交流哦
代码下载链接地址: