Struts2文件下载

最近项目中需要提供文件下载功能,思路是在项目中放一份Excel模板,然后直接找到路径下载,这也是一个不错的思路,就不用通过POI写代码来实现一个Excel模板啦。记录一下配置及代码

struts.xml文件配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <package name="support_downfile" namespace="/support" extends="base-default">
      <action name="download" class="cn.com.demo.DownloadFileAction">
         <result name="success" type="stream">
            <param name="contentType">application/octet-stream;charset=UTF-8</param>
            <param name="inputName">inputStream</param>
            <param name="contentDisposition">filename="${shortName}"</param>
            <param name="bufferSize">4096</param>
         </result>
      </action>
   </package>
</struts>

java代码:

public class DownloadFileAction extends BaseAction {
    private String fileName;
    private String shortName;
  
    public DownloadFileAction() {
    }

    public String getFileName() {
        return this.fileName;
    }

    public String getShortName() {
        return this.shortName;
    }

    public void setFileName(String fileName) {
            this.shortName = fileName.substring(fileName.lastIndexOf("/") + 1);
            this.fileName = URLDecoder.decode(fileName, "UTF-8");
    }

    public InputStream getInputStream() {
        try {
            if(this.fileName.equals("/WEB-INF/lib/webroot.tmp")) {
                String path = ServletActionContext.getServletContext().getRealPath("/");
                IOUtil.delFile(path + "WEB-INF\\lib\\webroot.tmp");
                ZipUtil.zip(path + "WEB-INF\\lib\\webroot.tmp", path);
            }

            return ServletActionContext.getServletContext().getResourceAsStream(this.fileName);
        } catch (Exception var2) {
            ServletActionContext.getResponse().setStatus(500);
            return null;
        }
    }

    public String execute() {
        return "success";
    }
}

前端只需要要传一个fileName就可以下载:

function downloadFile(){
   var url="${ctx}/support/download.action?fileName="+encodeURI(encodeURI("/base/jsp/orgbatchimport/importPersonOrg_Demo.xls"));
   window.open(url); 
   return;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值