struts2 下载问题java.lang.ClassCastException: java.io.ByteArrayInputStream cannot be cast to

为action中的inputPath属性初始化值 -->
   <param name="inputPath">/store/</param>    

   <result type="stream">  <!-- 指定类型stream 以流形式进行传输 ,注意后面的param是result的子元素-->  
       <param name="contentType">image/gif</param> <!--指定文件内容类型和互联网MIME标准中的规定类型一致,
                                                    例如text/plain代表纯文本,text/xml表示XML,image/gif
                                                    代表GIF图片,image/jpeg代表JPG图片 -->  

       <param name="contentDisposition">attachment;filename="123.gif"</param>  
    <!--指定文件以附件形式弹出下载对话框;filename="123.gif" 指定下载对话框中显示的文件名称;  
    文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。  
    如果直接写filename="123.gif",默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="123.gif"-->  
       <param name="bufferSize">4096</param> <!--指定下载缓冲区的大小-->  
  </result>  
</action>  


问题就出在不应该给action指定method属性,因为action配置上method属性后,struts2默认会把 ByteArrayInputStream强制转成String类型。那要在哪里配置哪个方法来执行下载操作,返回下载文件流。其实<param name="inputName">targetFile</param> 就已经指定了DownAction中的getTargetFile()返回下载文件流。所以我们只要去掉action的method属性,然后添加<param name="inputName">***</param>,





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值