struts2下载文件

来源:互联网 发布:nginx 防ddos攻击 编辑:程序博客网 时间:2024/06/05 07:20
struts2下载文件
项目用到下载文件,以下是我写的下载文件的源代码,支持文件名称为中文

ACTION:

[java] view plaincopy
  1. public class DownLoadAction extends ActionSupport {  
  2.       
  3.     /** 
  4.      *  
  5.      */  
  6.     private static final long serialVersionUID = 1L;  
  7.       
  8.     private String filenameInCN;  
  9.     private String fileNameCN;  
  10.     private String revision;  
  11.       
  12.     @Override  
  13.     public String execute() throws Exception {  
  14.         System.out.println(":" + filenameInCN);  
  15.         return SUCCESS;  
  16.     }  
  17.       
  18.     public String getFilenameInCN() {  
  19.         return filenameInCN;  
  20.     }  
  21.    
  22.     public void setFilenameInCN(String filenameInCN) {  
  23.         fileNameCN = filenameInCN;  
  24.         try {  
  25.             this.filenameInCN = new String(filenameInCN.getBytes(), "ISO-8859-1");  
  26.         } catch (Exception e) {  
  27.             e.printStackTrace();  
  28.         }  
  29.     }  
  30.    
  31.     public InputStream getDownloadFile() throws Exception {  
  32.        //找到相关文件返回流  
  33.     }  
  34.   
  35.     public String getRevision() {  
  36.         return revision;  
  37.     }  
  38.   
  39.     public void setRevision(String revision) {  
  40.         this.revision = revision;  
  41.     }  
  42.       
  43. }  
配置文件:
[html] view plaincopy
  1. <action name="downLoad" class="com.action.DownLoadAction">  
  2.     <result name="success" type="stream">  
  3.         <param name="contentType">application/octet-stream;charset=ISO8859-1</param>  
  4.         <param name="contentDisposition">attachment;filename="${filenameInCN}"</param>  
  5.          <param name="inputName">downloadFile</param>  
  6.     </result>  
  7. </action>  


contentType有多个属性,比如text/plain是文本类型,具体大家可以查看相关文档,application/octet-stream;charset=ISO8859-1是所有的文件的类型,以流的方式读取。
ontentDisposition表示下载文件的处理方式,有inline(默认)和attachment两种。若指定为inline模式,浏览器会先尝试直接打开文件,无法直接打开则弹出保存对话框;attachment模式则直接弹出文件保存对话框。
inputName表示下载文件的来源流。若inputName取值为downloadFile,则在相应的action类中必须有一个返回类型为InputStream的getDownloadFile方法来返回下载的文件入口。
filename="${filenameInCN}",filename是下载文件的名称,可以随便制定。

读取项目中的源文件返回InputStream类型
ServletActionContext.getServletContext().getResourceAsStream("/upload/123.txt");

获取项目的根目录

String path = ServletActionContext.getServletContext().getRealPath("/");
0 0
原创粉丝点击