日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩欧美在线观看免费 | 成人毛片视频在线观看 | 我想看一级黄色片 | 欧美日韩国产一区二区三区在线观看 | 人人玩人人弄 | 日日骚网 | 久久久久国产精品国产 | 中国一区二区三区 | 日本精品一二三 | 欧美色噜噜 | 欧美激情一区二区三区蜜桃视频 | 欧美人与禽zozzo性之恋的特点 | 国产成人精品综合在线观看 | a级性生活视频 | 日韩av一区二区三区在线观看 | 免费视频91蜜桃 | 少妇太紧太爽又黄又硬又爽 | 美女狠狠干 | www激情com | 亚洲精品久久一区二区三区777 | 成人av免费在线 | 欧美经典一区二区 | 中文字幕11页中文字幕11页 | av资源在线免费观看 | 高清乱码免费 | 国产一级久久久久毛片精品 | 午夜av片| 中文字幕一区二区三区又粗 | 免费黄色网址观看 | 国产精品九九九九九 | 日韩精品导航 | 专干老肥女人88av | 亚洲第一成肉网 | 热久久久久久久 | 久久亚洲激情 | 免费av大全 | 欧美性极品xxxx做受 | 亚洲图片在线视频 | 国产女人视频 | 欧美激情久久久 | 天堂av中文在线观看 | 三级小视频在线观看 | 国产免费视频一区二区三区 | 在线免费观看小视频 | 欧美日本韩国一区 | 欧美日韩国产免费观看 | 免费av观看网址 | 日批免费看| 美国美女群体交乱 | 欧美一区二不卡视频 | 亚洲精品免费电影 | 和漂亮岳做爰3中文字幕 | 一区二区有码 | 麻豆传谋在线观看免费mv | 亚洲av高清一区二区三区 | 红桃视频91 | 国产精品高潮呻吟视频 | jizz中国少妇高潮出水 | 日本久久久久久久久久 | 中文自拍 | 能在线观看的av | www.97av| 久久久久久久久黄色 | 亚州激情视频 | 自拍偷拍欧美激情 | 久久久久人妻一道无码AV | 大咪咪dvd | 另类小说色 | 国产精品成人无码专区 | 久久久成人精品视频 | 风间由美一区二区三区 | 欧美精品videos另类 | 69pao| 日韩欧美精品在线视频 | 五月激情视频 | 色播99 | 国产初高中真实精品视频 | 国产精品99一区二区三区 | 91精品国产91久久久久福利 | 欧洲自拍偷拍 | av有声小说一区二区三区 | 日韩高清不卡 | 黄视频免费在线观看 | 一本—道久久a久久精品蜜桃 | 欧美五月 | 精品国产一区二区三区在线 | 国产欧美二区 | 日日躁夜夜躁aaaabbbb | 国产又粗又猛又爽又黄91 | 视频二区在线 | 日韩精品啪啪 | 青青草免费公开视频 | 欧美高清在线观看 | av资源天堂 | 国产精品久久久久久 | 狠狠操狠狠| 欧美一线天 | 国产精品呻吟 | 曰韩一级片|