Struts2文件下载浅析

it2024-12-12  15

Struts2极大的简化了文件上传和下载,本文将主要介绍一下Struts2文件下载的实现1、功能主要是,在下载页面点击下载后,则下载相应的文件

 

2、代码部分jsp页面downloadPage:<body><!--该页面主要就是一个超链接,点击进入DownloadAction,并传递三个参数:原文件的名字文件类型显示的下载文件名--><a href="${pageContext.request.contextPath}/download?res=example.ppt&resType=application/vnd.ms-powerpoint&resName=MyDownload">点击下载文件</a>

</body>

*************************************************************

DownloadAction:public class DownloadAction extends ActionSupport{    private String res;    //下载的目标资源    private String resType; //下载的文件类型    private String resName;//下载的文件名

    public String getRes() throws Exception {        //对res请求参数进行处理,(中文)        return new String(res.getBytes("iso-8859-1"),"utf-8");    }

    public void setRes(String res) {        this.res = res;    }

    public String getResType() {        return resType;    }

    public void setResType(String resType) {        this.resType = resType;    }

    public String getResName() {        return resName;    }

    public void setResName(String resName) {        this.resName = resName;    }

    //提供一个返回值为InputStream的get方法    public InputStream getTarget() throws IOException {    //在目录下我新建了一个downloadFile文件夹,用于存放要下载的文件        return new FileInputStream(ServletActionContext.getServletContext().getRealPath("/downloadFile")+res);    }

    @Override    public String execute() throws Exception {        return SUCCESS;    }}

*************************************************************

配置文件struts.xml:<action name="download" class="action.DownloadAction">     <result type="stream"> <!-- 二进制流 -->

         <!-- 该参数指定二进制流的-->         <param name="contentType">${resType}</param>

         <!-- 指定返回InputStream的方法-->         <param name="inputName">target</param>

         <param name="contentDisposition">filename=${resName}</param>

         <!--控制文件下载缓冲的大小-->         <param name="bufferSize">4096</param>      </result></action>

简要介绍一下参数的含义:1)  <param name="contentDisposition">filename=${resName}</param>

     contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型或者图片类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择

2)  <param name="inputName">target</param>,这个target名字要和DownloadAction.java类中的getTarget()方法名去掉get,小写首字母一致

可能对于各类文件的类型有同学并不是很清楚,这里介绍一下如何查询文件在web的类型进入自己安装的tomcat ---> conf文件 ---> 打开web.xml  里面列出了所有文件的类型

 

转载于:https://www.cnblogs.com/chentao-cus/p/4741944.html

最新回复(0)