Struts2文件下载

1:struts2配置文件如下:

   

    备注1
      contentType:指定被下载文件的文件类型。 application/octet-stream 默认值,可以下载所有类型
      inputName:指定被下载文件的入口输入流, 和DownloadAction中的getInputStream()对应,主要是获得实际资源文件
      contentDisposition:指定下载的文件名,一般和文件名一致,但是要注意中文件名保存时乱码问题,解决办法就是进行编码处理
      如:<param name="contentDisposition">attachment;filename="${file}"</param> 要求DownloadAction中的getFile()返回的文件名编码方式为

      ISO8859-1,所以要进行下面处理:
                      public String getFile() {
                       String fileName= "";
                           try {
                                    fileName = new String(file.getBytes(),"ISO8859-1");  //把file转换成ISO8859-1编码格式
                                } catch (UnsupportedEncodingException e) {
                                      e.printStackTrace();
                                     }
                           return fileName;
                      }

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

   备注2
      <result name="success" type="stream"> 要注意的是result的type类型要为:stream

   备注3
     上面的拦截器主要是用来设置下载权限的,如果用户没有登陆则不能下载,在配置拦截器时间要注意顺序问题

2:DownloadAction代码如下:

  

 

3:jsp页面如下:

  

  注意
   这里唯一要说明的一点是链接包含有中文的时候处理办法,因为链接的实际上是按get方式传送的,所以可以在Tomcat中做处理
   在server.xml中加入URIEncoding="编码格式"
   如:<Connector port="8080"               maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
  但还有一点要注意,那就是URIEncoding的编码格式要和页面的编码格式相同

  

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值