日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2文件下载出现Can not find a java.io.InputStream with the name的错误

發(fā)布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2文件下载出现Can not find a java.io.InputStream with the name的错误 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天在用struts2就行文件下載時出現(xiàn)如下錯誤:

Servlet.service() for servlet default threw exception java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [imageStream] in the invocation stack.
Check the
<param name="inputName"> tag specified for this action. at org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:189) at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178) at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253) at com.best.top.validate.TopInterceptor.intercept(TopInterceptor.java:47) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)

說實話這個提示真有誤導(dǎo)人的嫌疑,剛開始還以為是名稱不對,估計一般人看到這個提示都這樣想。然后查看StreamResult的源代碼才發(fā)現(xiàn)是因為InputStream為null的緣故,汗一個。看下源碼:

if (inputStream == null) { // Find the inputstream from the invocation variable stack inputStream = (InputStream) invocation.getStack().findValue(conditionalParse(inputName, invocation)); } if (inputStream == null) { String msg = ("Can not find a java.io.InputStream with the name [" + inputName + "] in the invocation stack. " + "Check the <param name=\"inputName\"> tag specified for this action."); LOG.error(msg); throw new IllegalArgumentException(msg); }

大家如果也碰到此類問題,直接打印

InputStream in=ServletActionContext.getServletContext().getResourceAsStream(realPath); System.out.println(in);

如果打印為NULL的話,恭喜您,問題得以解決,問題的原因是這個流的realPath路徑錯誤,還沒明白的往下看,怪呀,我的配置應(yīng)該沒錯呀

頁面上:

<a href="fileDownload.action?fileName=<s:property value ="imageName" />">下載此圖片</a>

struts.xml中:

<!-- 文件下載,支持中文附件名 --><action name="fileDownload"class="com.test.action.filedown.FileDownloadAction"><result name="success" type="stream"><!-- 動態(tài)文件下載的,事先并不知道未來的文件類型,那么我們可以把它的值設(shè)置成為:application/octet-stream;charset=ISO8859-1 ,注意一定要加入charset,否則某些時候會導(dǎo)致下載的文件出錯; --><param name="contentType">application/octet-stream;charset=ISO8859-1</param><param name="contentDisposition">attachment;filename="${downloadFileName}"</param><!-- 使用經(jīng)過轉(zhuǎn)碼的文件名作為下載文件名,downloadFileName屬性對應(yīng)action類中的方法 getDownloadFileName() 其中特殊的代碼就是${downloadFileName},它的效果相當(dāng)于運行的時候?qū)ction對象的屬性的取值動態(tài)的填充在${}中間的部分,我們可以認(rèn)為它等價于+action. getDownloadFileName()。 --><param name="inputName">inputStream</param><param name="bufferSize">4096</param></result></action>

action中:

private String fileName;// 初始的通過param指定的文件名屬性 set get/** 文件名 轉(zhuǎn)換編碼 防止中文亂碼*/ public String getDownloadFileName() {String fileName=ServletActionContext.getRequest().getParameter("fileName");String downFileName = fileName;try {downFileName = new String(downFileName.getBytes(), "ISO8859-1");} catch (Exception e) {e.printStackTrace();}return downFileName; } //下載的流 public InputStream getInputStream() {String name=this.getDownloadFileName(); // String realPath=ServletActionContext.getServletContext().getRealPath("/uploadImages")+ "/"+name; 路徑錯誤String realPath="/uploadImages/"+name;InputStream in=ServletActionContext.getServletContext().getResourceAsStream(realPath);if(null==in){System.out.println("Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the <param name=\"inputName\"> tag specified for this action.檢查action中文件下載路徑是否正確."); }return ServletActionContext.getServletContext().getResourceAsStream(realPath); }@Override public String execute() throws Exception {return SUCCESS; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/longshiyVip/p/4958668.html

總結(jié)

以上是生活随笔為你收集整理的struts2文件下载出现Can not find a java.io.InputStream with the name的错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五月婷婷丁香花 | 在线视频在线观看 | www.污污| 日韩精品一区二区三 | 欧美日韩一区二区三区四区 | 伊人av综合 | 少妇做爰免费视频播放 | 国产又粗又猛视频免费 | 日本黄在线观看 | 在线观看黄色小视频 | 男生插女生视频在线观看 | 女性裸体不遮胸图片 | 亚洲精品在线免费播放 | 激情综合网av | 9i看片成人免费高清 | 老女人做爰全过程免费的视频 | 日本一区二区欧美 | 色婷婷一区 | 99国产精品久久久久99打野战 | av色网站| 福利视频大全 | 日本一区二区三区视频在线 | 日韩第一页 | 日韩在线中文字幕 | 好吊色在线视频 | 丁香花免费高清完整在线播放 | 久久久久久久一区二区三区 | 天天曰| 国产欧美久久久精品免费 | 亚洲精品久久久蜜桃网尤妮丝 | 在线观看免费视频一区 | 正在播放日韩 | 免费欧美黄色 | 成人av福利 | 亚洲无av | 污片免费观看 | 欧美性猛交ⅹxx | 男人在线天堂 | 另类老妇性bbwbbw图片 | 亚洲美女视频网站 | 欧美五月激情 | 欧美日本成人 | 国产精品地址 | 女子spa高潮呻吟抽搐 | 一区二区三区在线播放 | 色拍拍视频 | 女女同性高清片免费看 | 韩日黄色 | 日韩三级不卡 | 国产日产精品一区二区三区四区 | 色狠狠一区 | 欧美精品免费一区二区 | 超碰在线人人草 | 色涩综合| 欲涩漫入口免费网站 | 日本精品一区视频 | 欲色视频 | 深夜影院在线观看 | 午夜视频在线播放 | 男女无套免费视频网站动漫 | 美女搞黄视频网站 | 国精品无码一区二区三区 | 久久av影视 | 精品久久久久久久中文字幕 | 成人在线视频网站 | 青青青视频在线播放 | 色小说在线 | www.com捏胸挤出奶 | 欧美亚洲一级 | tube极品少妇videos | 神马午夜场| 麻豆91在线| 婷婷婷色 | 欧美人体视频一区二区三区 | 日本中文字幕在线观看视频 | 亚洲国产日韩在线观看 | 超碰九七 | 日韩视频免费观看高清完整版在线观看 | 久久理伦| 成年人性生活免费视频 | 欧美精品小视频 | 免费在线黄色网址 | 爱爱综合网 | 一区二区三区av | 亚洲阿v天堂 | 毛片网站免费观看 | 精品无码国产一区二区三区av | 久久黄色一级片 | 国产视频一二三区 | 啪啪的网站 | 精品国产九九 | 亚洲无人区码一码二码三码的含义 | 欧洲精品一区二区 | 色五婷婷| av色成人 | 欧美天天色 | 亚洲激情小视频 | 四虎影裤| 国产精品高潮呻吟久久久久久 |