Struts2.5.6版本文件下載問題Can not find a java.io.InputStream with the name [downloadFile] in the invocation

好久好久以前的隨筆:http://www.javashuo.com/article/p-epopwwgs-hy.htmlhtml

一、Struts2.5.6版本文件下載問題Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack,錯誤大概以下所示。java

1 message:'Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the tag specified for this action.', stackTrace:'java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the tag specified for this action.\n\tat org.apache.struts2.result.StreamResult.doExecute(StreamResult.java:231)\n\tat 

這裏,列一下本身遇到的坑,因爲框架如今使用的較少了,就不給出完整案例,只是列一下解決思路,節省一下時間。linux

 

二、出現這種錯誤通常有下面幾種可能,由於這個Struts框架報這個錯誤,太模棱兩可了,若是找不到思路,真的很頭疼。apache

  1)、第一種、文件路徑不對,根本就沒有取到文件,這種狀況下,能夠將得到InputStream的那條語句放在system.out.println()中輸出一下,若爲null,那就是路徑不對了,或者說得準確些,就是根本沒有找到文件,若是是這種狀況,那麼就根據讀取不到文件,才返回報錯的。瀏覽器

  2)、第二種、在action中沒有寫對應於,配置文件struts.xml中「 <param name="inputName"> 」後面屬性的get方法,如本例就應該寫public InputStream getDownloadFile()方法,就是下面的這個標籤。說白了,就是你的語法有錯誤,仔細檢查語法,若是是本地正常,生產環境異常,說明語法沒問題,就考慮其餘方向就好了。tomcat

 1 <!-- 下載操做 -->
 2 <result name="download" type="stream">
 3    <!-- 容許下載的文件的類型:指定爲全部的二進制的文件類型,去tomcat的wen.xml裏面搜索.exe -->
 4    <param name="contentType">application/octet-stream</param>
 5    <!-- 對應的就是Action種的屬性,返回流的屬性,【其實就是getAttrInputStream()】 -->
 6    <param name="inputName">attrInputStream</param>
 7    <!-- 下載頭,包括:瀏覽器顯示的文件名 -->
 8    <param name="contentDisposition">attachment;filename="${downFileName}"</param>
 9    <!-- 緩衝區大小設置 -->
10    <param name="bufferSize">1024</param>
11 </result>

  3)、第三種,就是第一種狀況的變形,說到底仍是找不到問題,爲啥找不到問題呢,好比window操做系統,struts能夠下載文件,可是linux操做系統,不能下載文件,這種狀況,有的人可能會排查是否是相對路徑,絕對路徑的問題,固然,也有這種可能,可是若是本地測試沒有問題,通常不會是這種狀況,那是啥子狀況呢。那就是文件名稱亂碼問題,說到底就是字符集問題。若是設置的是<param name="contentType">application/octet-stream;charset=ISO8859-1</param>,若是文件和文件名稱是utf-8格式的,那通常就很坑爹了,這樣就會形成亂碼,天然就找不到文件,就報錯了。app

 

總結:千萬不要用沒有優點的框架了,若是選擇Struts和SpringMVC,爲何不用SpringMVC呢!框架

相關文章
相關標籤/搜索