网上找了好多资料,但还是报错java.lang.IllegalArgumentException: 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.贴出代码如下,请高手指点...struts.xml
<action name="down" class="learn.action.downloadAction">
<result name="success" type="stream">
<param name="contentType">application/vnd.ms-word</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">40960</param>
</result>
</action>
DownloadActon类
public class DownloadAction extends ActionSupport{
private String fileName;
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileName(){
return fileName;
}
public InputStream getInputStream() throws Exception {
ServletContext sc = ServletActionContext.getServletContext();
String realpath = sc.getRealPath("/upload");
String path = realpath + "\\" + this.fileName;
System.out.println("<<<" + this.fileName);
System.out.println(">>>" + path);
return ServletActionContext.getServletContext().getResourceAsStream(path);
}
public String execute()throws Exception{
return SUCCESS;
}
}
<action name="down" class="learn.action.downloadAction">
<result name="success" type="stream">
<param name="contentType">application/vnd.ms-word</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">40960</param>
</result>
</action>
DownloadActon类
public class DownloadAction extends ActionSupport{
private String fileName;
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileName(){
return fileName;
}
public InputStream getInputStream() throws Exception {
ServletContext sc = ServletActionContext.getServletContext();
String realpath = sc.getRealPath("/upload");
String path = realpath + "\\" + this.fileName;
System.out.println("<<<" + this.fileName);
System.out.println(">>>" + path);
return ServletActionContext.getServletContext().getResourceAsStream(path);
}
public String execute()throws Exception{
return SUCCESS;
}
}
解决方案 »
- 如何调用google并显示?来者有分!!!
- 面页判断问题
- 利用ajax如何在jsp追加记录时,不刷新之前显示的记录。
- struts 使用ajax 使用post 提交的内容到action乱码??
- 请问,谁知道关于JAVA制图的东西吗??????????????
- 点击关闭按钮执行一串代码问题
- 请教怎样在mysql数据库上设密码啊?能不能说说具体的操作步骤啊?谢谢!
- progress数据库乱码
- 在servlet中打开一个properties文件的问题,怎么也解决不了啊,为什么??
- 为什么只可以插入一条记录?
- tuscany:implementation.script 如何识别 c++ 的脚本语言
- struts2 文件下载错误!
网上找了好多资料,但还是报错java.lang.IllegalArgumentException: 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.
没有找到java io InputStream
<!--
inputName默认值是InputStream,如果action中用于读取下载文件内容的属性名是inputStream,那麽可以省略这个参数;注意大小写
-->
<param name="inputName">inputStream</param>//inputStream属性的getter方法,StreamResult结果类型使用该属性来读取下载文件的内容
public InputStream getInputStream() throws Exception{
.....
public class downloadAction extends ActionSupport{
private String fileName;
public void setFileName(String fileName){
this.fileName =fileName;
}
public String getFileName(){
return fileName;
}
public String getDownloadFileName() {
String downFileName = fileName;
try { //转换为下载文件名也是支持中文的下载名
downFileName = new String(downFileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downFileName;
}
public InputStream getInputStream() throws Exception {
ServletContext sc = ServletActionContext.getServletContext();
String realpath = sc.getRealPath("/WEB-INF/upload");
String path = realpath + "\\" + this.fileName;
return new FileInputStream(path);
}
public String execute()throws Exception{
return SUCCESS;
}
}XML配置文件
<!-- 文件下载,支持中文附件名 -->
<action name="down" class="learn.action.downloadAction">
<result name="success" type="stream">
<param name="contentType">application/octet-stream;charset=ISO8859-1</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">327680</param>
</result>
</action>
<constant name="struts.multipart.maxSize" value="1000000"/>你说的问题马上就解决了!!!!!!!!!!!!!!!!