zoukankan      html  css  js  c++  java
  • struts2基于注解的文件下载

    参数说明:

    type = "stream",这里的type一定要等于stream;

    对params的几个参数的解释:

    "contentType", "application/octet-stream" : 文件格式;

    "inputName", "attachstream" :获取文件的方法名;这里的attachstream需要和action里的attachstream对应,类型就是InputStream;

    "contentDisposition", "attachment;filename="${attachname}"":文件内容(显示的)属性,

    这里的filename="${attachname}" :下载之后的文件名;这里需要在action里定义一个变量,去获取下载文件的文件名,包括后缀,例如:下载的文件为**/**/upload/test.jpg,那么需要定义一个变量attachname,变量名一定要对应,然后,attachname = test.jsp;

    "bufferSize", "4096" :限定下载文件 缓冲区的值;

    通过上述属性的解释,我们可以知道,在action里需要定义的变量有以下几个:

    private InputStream attachstream;//文件读取流对象

    private String attachname;//下载文件的名字

    然后需要对应的getter/setter方法,

    action实现代码如下:

     1 @Action(value = "/admin/toDownload",
     2             results = {@Result(name = "download", type = "stream", 
     3                         params = {
     4                         "contentType", "application/octet-stream",
     5                         "inputName", "attachstream",
     6                         "contentDisposition", "attachment;filename="${attachname}"",
     7                         "bufferSize", "4096"
     8             })})
     9     public String toDownload(){
    10         String path = ServletActionContext.getServletContext().getRealPath("/" + fileName);//fileName是页面传过来的参数
    11         try {
    12             attachstream = new FileInputStream(path);
    13             String []attachnames = fileName.split("/");
    14             attachname = attachnames[attachnames.length - 1];
    15         } catch (FileNotFoundException e) {
    16             e.printStackTrace();
    17         }
    18         return "download";
    19     }
  • 相关阅读:
    如何检查项目的需求是否完整
    Linux环境 Java内存快速查看
    字符串拼接性能比较出乎意料的结果
    MySQL 查看表大小
    五大机器学习微信公众号推荐
    如何用PYTHON代码写出音乐
    【转载】机器学习如门概览
    机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码)
    【转载】程序猿转型AI必须知道的几件事!
    如何拿到阿里算法校招offer
  • 原文地址:https://www.cnblogs.com/xulzong/p/4968706.html
Copyright © 2011-2022 走看看