您的位置:首页 > 编程语言 > Java开发

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

2017-09-20 11:17 656 查看
为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>
,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐