`
scorpiomiracle
  • 浏览: 260111 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Struts2文件下载报错,找不到输入流

阅读更多
tomcat报错如下:
严重: 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.

  出现这种错误一般只有两种可能:
  1.文件路径不对,根本就没有取到文件,这种情况下,可以将获得InputStream的那条语句放在system.out.println()中输出一下,若为null,那就是路径不对了,或者说得准确些,就是根本没有找到文件。
  2.在action中没有写对应于 配置文件中“ <param name="inputName"> ”后面属性的get方法,如本例就应该写public InputStream getDownloadFile()方法

附:
  我也采用了视频和网络上用的最多的方法来返回输入流,如下:
return ServletActionContext.getServletContext().getResourceAsStream("……");

  但是不管怎么弄,都是报如上错误。在一博客上看到,“对ServletContext的getResourceAsStream方法认识有误,该方法不是从本地路径取文件,而是tomcat的工程路径下取文件流”,如“/WEB-INF/download/file.*”。此刻才恍然大悟,我要下载的文件就是位于其他路径,之前分析报错原因总认为肯定是配置的错误。然后,照其所说,一试,果然控制台输出为null,怪不得,于是改为如下方式获得文件流。
File fileDes = new File(path);//path是要下载文件所在的路径,可以写成任意本地路径
InputStream is = new FileInputStream(fileDes);
return is;
分享到:
评论
3 楼 bigarden 2012-05-11  
遇到了同样的问题了,果然是return ServletActionContext.getServletContext().getResourceAsStream("……");
2 楼 java_4_ever 2011-07-20  
动态生成的文件使用action下载时提示报错同楼主遇到的错误,检查了一遍拼写没有错误。很是不解,请教楼主
1 楼 djb_daydayup 2010-05-29  
刚好也碰到这个问题,一看果然我用的是
return ServletActionContext.getServletContext().getResourceAsStream("……");

这个方法,真是害人不浅啊,谢谢lz解决了我的问题。

相关推荐

Global site tag (gtag.js) - Google Analytics