struts2文件下载(文件保存以BLOB类型在数据库中)

struts2自带有文件下载的功能。本文讲述的是,从Oracle中读取BLOB类型的文件,并转换成文件。为什么会选择把文件以BLOB类型存在数据库中呢?Boss说,这样保证了数据安全,不容易被窃取。

struts2文件上传(保存为BLOB格式) 

Struts2的入门实例

Struts2实现ModelDriven接口

遇到的Struts2文件下载乱码问题

Struts2整合Spring方法及原理

Struts2 注解模式的几个知识点

贴出代码:

struts2.xml文件

<!-- 简单文件下载 -->
<action>
        <!-- 注意type="stream" -->
 <result type="stream">
    <!-- 保证文档的中文标题不乱码,必须这样做,在Java代码中是将标题转换成了ISO8859-1 -->
    <param>application/x-msdownload;charset=ISO8859-1</param>
    <!-- 获得的文件流 -->
    <param>downloadFile</param>
    <!-- 这个是获得的文件名 -->
    <param>attachment;filename="${title}"</param>
    <!-- 这个是输出流的大小,这里是从Java文件中获得的文件的大小 -->
    <param>${size}</param>
 </result>
</action>
DownloadAction.java
private int id;
private String title;
private int size;
ResultDao rDao = new ResultDao();
// 根据id,从数据库获取指定的文件
public InputStream getDownloadFile() throws Exception {
        // 获取文件流
 return new ByteArrayInputStream(rDao.findFileById(id));
}
public String execute() throws Exception {
 Result r = rDao.findResultById(id);

title = new String(r.getTitle().getBytes(), "ISO8859-1");// 从数据库中获取文件的标题
 size = getDownloadFile().available();// 获取文件的大小
 return SUCCESS;
}
public void setTitle(String title) {
 this.title = title;
}
public void setSize(int size) {
 this.size = size;
}
public void setId(int id) {
 this.id = id;
}

前台jsp代码

<!-- 需要传指定的id -->
<a href="download.action?id=<s:property value="#r.id" />" target="_blank">下载资料</a>
<!-- target="_blank"必须要,也就是从新的页面打开这个下载链接的意思,原因是:有些浏览器下载完成后会自动关闭当前页,用户当然不会希望我下载完东西之后就把之前的页面给关闭了 -->

Struts 的详细介绍请点这里
Struts 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a0a974906eb07240842931afba4745bf.html