记一下。
分析出现这个问题的原因:我做了测试,action中相关代码如下
public java.io.InputStream getDownloadFile()throws Exception{
System.out.println(path);
try {
downloadFile=ServletActionContext.getServletContext().getResourceAsStream(path);
System.out.println(downloadFile);
}catch(Exception e) {
System.out.println("no");
}
return downloadFile;
}
运行时输出结果如下:
F:/a.jpg
null
十二月 06, 2018 5:01:53 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error
严重: 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.
可知ServletActionContext.getServletContext().getResourceAsStream(path);
该方法返回的是一个null,没有找到我的资源文件。
查看网上的原因是该方法的加载资源范围有限制,必须在项目文件里面,具体哪几个文件夹下不太清楚,反正我放在web-inf下可以。
解决方法1:就上面所说的,将资源文件放在合法的文件夹下。
解决方法2:我们想要得到的是一个文件输入流,换成new FileInputStream(path),
也可以