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     }
  • 相关阅读:
    927小程序繁星计划峰会 · 看完这七大话题 你会更了解阿里小程序
    不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式
    虽然他们说是水题,但我觉得思想蛮好的
    新学dfs(看懂了)
    01背包,死记硬背(我是真的蠢)
    装箱问题(太笨、还没想通)
    高精度乘法,string中的坑
    双十一用python秒杀京东好货!
    高精度减法用string 和 stack
    n阶汉诺塔 记住吧。。
  • 原文地址:https://www.cnblogs.com/xulzong/p/4968706.html
Copyright © 2011-2022 走看看