Can not find a java.io.InputStream with the name [inputStream] in the invocation

本文探讨了在Struts框架中遇到的关于InputStream获取失败的问题,并详细解释了几种可能的原因及解决方案,包括检查文件路径、确保正确实现了配置文件中指定的方法,以及如何正确地从ServletContext获取资源。

具体异常是这句话:

Can not find a java.io.InputStream with the name[inputStream] in the invocation stack. Check the<param name="inputName"> tagspecified for this action.


1.文件路径不对,根本就没有取到文件。这种情况下,可以将获得InputStream的那条语句放在system.out.println()中输出一下,若为null,那就是路径不对了,或者说得准确些就根本没有找到文件。
2.在action中没有写配置文件中"<paramname="inputName">"后面属性的那个get方法.
当以上两种情况都正确的情况下,问题就在这里了:
 
  当采用 returnServletActionContext.getServletContext().getResourceAsStream("...")这种方法获得输入流的时候,要保证文件位置在 ServletContext 当中,就是说要在当前的应用上下文中,
如果想要获得外部文件 譬如 D盘中的某个文件,那么就要自己创建输入流才可以,如:
File 
file new File("D:\\spring.doc");   
 
  
InputStream 
is new FileInputStream(file);   
 
  
return 
is;   
File file = new File("D:\\spring.doc"); InputStream is = newFileInputStream(file); return is; 

则OK!!

最后我的解决方法是在struts.xml中,action 的 method 没有写  ,之后补充就好了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值