Struts2文件下载

 1 package com.test.action;
 2 
 3 import java.io.InputStream;
 4 import java.io.UnsupportedEncodingException;
 5 import javax.servlet.http.HttpServletResponse;
 6 import org.apache.struts2.ServletActionContext;
 7 import com.opensymphony.xwork2.ActionSupport;
 8 
 9 
10 /**
11  * Action that file download
12  * @author Luxh
13  */
14 public class FileDownloadAction extends ActionSupport{
15 
16     private static final long serialVersionUID = 401395607049416796L;
17     
18     /**
19     * 文件名
20     * 接收请求传递的文件名
21      */
22     private String fileName;
23 
24     public String getFileName() {
25         return fileName;
26     }
27 
28     public void setFileName(String fileName) throws UnsupportedEncodingException {
29         //用UTF-8重新编码文件名,解决中文乱码
30         this.fileName = new String(fileName.getBytes("ISO-8859-1"),"UTF-8");
31     }
32     
33     
34     /**
35     * 下载的文件入口
36     * @throws UnsupportedEncodingException 
37      */
38     public InputStream getInputStream() throws UnsupportedEncodingException{
39         HttpServletResponse response = ServletActionContext.getResponse();
40           response.setHeader("Content-Disposition", "attachment;fileName="
41                   + java.net.URLEncoder.encode(fileName,"UTF-8"));
42           //java.net.URLEncoder.encode(fileName,"UTF-8")  编码转换,解决乱码
43         return ServletActionContext.getServletContext().getResourceAsStream(fileName);
44     }
45     
46     
47 
48     @Override
49     public String execute() throws Exception {
50         return SUCCESS;
51     }
52     
53     
54 
55 }
复制代码

  

  struts.xml配置文件:

  

复制代码
 1 <action name="fileDownload" class="com.test.action.FileDownloadAction">
 2             <result name="success" type="stream">
 3                  <!-- 下载文件类型定义 --&gt 
 4                  <param name="contentType">application/octet-streamparam>
 5                  <!-- 下载文件流定义 --&gt 
 6                  <param name="inputName">inputStreamparam>
 7                  <!-- 下载文件的缓冲大小 --&gt
 8                  <param name="bufferSize">4096param>
 9             result>
10         action>
复制代码

  

  jsp页面:

  

1  <a href="fileDownload.action?fileName=">文件下载a>

  fileName的值在生成页面的时候动态生成。

  需要注意的是fileName是文件在项目中的完整路径,否则会报inputStream流找不到的异常。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26481450/viewspace-731193/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26481450/viewspace-731193/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值