转:Struts 2 下载文件(12)上

11.3  Struts 2控制文件下载

文件下载相对于文件上传要简单得多,最简单的方式就是直接在页面上给出一个下载文件的链接,使用Struts 2框架来控制文件的下载,关键是需要配置一个stream类型的结果,需要指定下面4个属性。

 contentType属性:指定被下载文件的文件类型。

 inputName属性:指定被下载文件的入口输入流。

 contentDisposition属性:指定下文件的文件名称。

 bufferSize属性:指定下载文件时的缓冲区大小。

配置上面4个属性,既可以在配置文件中配置,也可以在Action中设置该属性来完成配置。

11.3.1  在配置文件中指定下载资源

下面给出在配置文件中指定下载资源的示例,如代码11.9所示。

代码11.9  文件下载业务控制器

 

package  ch11;

import  java.io.InputStream;

import  org.apache.struts2.ServletActionContext;

import  com.opensymphony.xwork2.Action;

public   class  FileDownloadAction  implements  Action  {

    
private String inputPath;

    
public void setInputPath(String value) {

        inputPath 
= value;

    }


    
//返回一个InputStream类型值

    
public InputStream getInputStream() throws Exception {

        
return ServletActionContext.getServletContext().getResourceAsStream (inputPath);

    }


    
public String execute() throws Exception {

        
return SUCCESS;

    }


}


 

Action非常简单,并没有其他特殊之处,关键在于配置文件中关于该Action的配置,其内容如下所示:

 

<!-- 配置文件定义文件下载 -->

        
< action  name ="download"  class ="ch11.FileDownloadAction" >

            
<!-- 指定下载资源位置 -->

            
< param  name ="inputPath" > /upload/struts-power.gif </ param >

            
<!-- 指定success逻辑视图为一个stream类型,即流视图 -->

            
< result  name ="success"  type ="stream" >

                
<!-- 下载文件的类型 -->

                
< param  name ="contentType" > image/gif </ param >

                
<!-- 下载文件位置 -->

                
< param  name ="inputName" > inputStream </ param >

                
< param  name ="contentDisposition" >

                    filename="struts.gif"

                
</ param >

                
<!-- 缓冲区大小 -->

                
< param  name ="bufferSize" > 4096 </ param >

            
</ result >

</ action >

 

读者可以看到,该Action指定了一个success返回逻辑视图,该视图类型为stream,即一个流类型,即需要下载的资源流。本示例中,在该success逻辑视图中增加了4个参数,参数contentType指定了下载资源的类型;inputName参数和contentDisposition参数指定了下载资源的位置;bufferSize参数指定了下载资源的缓冲区大小。

Action配置中,初始化了一个inputPath参数,即指定了下载资源的Web相对位置。读者可以运行该示例,在浏览器中输入http://localhost:8080/bookcode/ch11/download.action,结果如图11.11所示。

11.11  Struts 2控制文件下载界面

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值