如果要下载一个文件,而服务器上又没有此文件,此时会有错误提示
HTTP Status 500 - Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the <param name="inputName"> tag specified for this action.
PS:有时候会因为编码的问题,导致读取错误,也出现这样问题,但归根结底是找不到文件的原因,找不到文件,inputStream就为空。
解决这样的问题,就是在execute函数中先查询此文件是否存在,如果存在则返回SUCESS,如果不存在就ERROR。但返回的ERROR的result类型type应该为redirectAction或者没有。
<action name="download" class="com.Action.DownloadAction">
<result type="stream" name="success">
<param name="contentType">application/octet-stream</param>
<!-- 要有相对应的getDownloadFile()方法返回值是 InputStream -->
<param name="inputName">downloadFile</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
<result name="error" type="redirectAction">filelist</result>
</action>