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

最近项目需要用到上传下载,以前学jsp的时候直接用的是smartUpload,现在学的框架但是老师只是简单地教了框架的内容

对struts文件上传和下载没有涉及,没办法只能自己自学了!结果出现了上面的问题。

这个问题的根本原因网上都有说出来,但是没有给出的解决方案。原因是要返回的流为空,文件的路径有误导致文件的输入流为空!

所以最好在逻辑处理那块输出的你要下载文件的路径看是不是你要下载的路径!好了废话不多说哈!

package com.iss.action;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class DownLoad extends ActionSupport {

private String fileName;

private String directory;

public void setDirectory(String directory) {

this.directory = directory;

}

public String getFileName() {

return fileName;

}

public void setFileName(String fileName) {

this.fileName = fileName;

}

public InputStream getInputStream() throws FileNotFoundException {

String dir = directory + fileName;

System.out.println(dir);//输出的文件要下载的路径

// return ServletActionContext.getServletContext().getResourceAsStream(

// "/" +dir);//使用相对路径下载文件内容默认是和webRoot同一目录

return new FileInputStream(dir);//使用全局路径下载

}

@Override

public String execute() throws Exception {

System.out.println("fileName:" + fileName);

return SUCCESS;

}

}

struts.xml中的配置

<!--下载action -->

<action name="downloadAction" class="com.iss.action.DownLoad">

<!-- <param name="directory">/images/</param> -->下载路径为相对路径

<param name="directory">E:/wang/head/</param>下载路径为绝对路径

<result type="stream">

<!--指定下载文件内容的类型 -->

<param name="contentType">jpg/gif</param>

<!--inputName默认值inputStream -->

<param name="inputName">inputStream</param>

<!--动态文件获取 -->

<param name="contentDisposition">attachement;fileName="${fileName}"</param>

<!-- 指定下载文件的缓冲大小 -->

<param name="bufferSize">50000000</param>

</result>

<result name="input">error.jsp</result>

</action>

总结:无论使用相对路径还是绝对路径作为下载路径都要把要下载的文件路径写对否则就会出现上面的错误!

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

时间: 2024-10-12 19:08:06

Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the <的相关文章

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

1.错误描写叙述 八月 14, 2015 4:22:45 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error 严重: Exception occurred during processing request: Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the <param name=

Java IO操作——字节流(OutputStream、InputStream)和字符流(Writer、Reader)

学习目标 掌握流的概念 掌握字节流与字符流的作用 掌握文件的标准操作步骤 掌握字节与字符操作的区别 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序中需要数据的时候就用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输出都是以流的形式保存的,流中保存的实际上全部是字节文件. 字节流与字符流 在java.io包中操作文件内容的主要有两大类:字节流和字符流,两类都分为输入和输出操作.在字节流中输出数据主要是使用OutputStream完成,输入

hadoop MR 任务 报错 &quot;Error: java.io.IOException: Premature EOF from inputStream at org.apache.hadoop.io&quot;

错误原文分析 文件操作超租期,实际上就是data stream操作过程中文件被删掉了.通常是因为Mapred多个task操作同一个文件,一个task完成后删掉文件导致.这个错误跟dfs.datanode.max.transfer.threads参数到达上限有关.这个是datanode同时处理请求的任务上限,总默认值是 4096,该参数取值范围[1 to 8192] hadoop docs hdfs-site.xml dfs.datanode.max.transfer.threads 4096 S

struts2文件下载出现Can not find a java.io.InputStream with the name的错误

今天在用struts2就行文件下载时出现如下错误: 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">

struts2文件下载 出现Can not find a java.io.InputStream with the name的错误

成功代码: 前台界面jsp: <a style="text-decoration:none;" href="<%=path %>/main/frontNewsAction_downloadFile.action?fileName=<s:property value="fileTitle"/>">下载</a> Action文件:private String fileName;//get set方法 p

Java IO 概述

原文链接作者: Jakob Jenkov   译者: 李璟([email protected])  校对:方腾飞 在这一小节,我会试着给出Java IO(java.io)包下所有类的概述.更具体地说,我会根据类的用途对类进行分组.这个分组将会使你在未来的工作中,进行类的用途判定时,或者是为某个特定用途选择类时变得更加容易. 输入和输出 – 数据源和目标媒介 术语“输入”和“输出”有时候会有一点让人疑惑.一个应用程序的输入往往是另外一个应用程序的输出.那么OutputStream流到底是一个输出到

[Java] Java IO

Java IO 是 Java 的一套 API, 用于读入和写出数据(输入和输出).Java IO API 位于 java.io package.实际上 java.io package 没有解决所有的输入输出情况,例如,web 页面没有包含在 Java IO package 里面,而是由 Java 企业版本的 servlet 和 HTTP package 处理. Java IO package 关注文件.网络流(Network Stream), 内存缓冲区(internal memory buff

Java IO——堵塞式

目录     1.  File类   2.  InputStream和OutputStream   3.  Reader和Writer   4.  RandomAccessFile   5.  对象序列化   6.  标准I/O   7.  进程控制   内容     1.  File类   File类给人的感觉就是文件类,其实对其恰当的诠释却是Filepath(文件路径),java.io.File类不仅可以代表一个特定的文件,还可以代表一个目录下面的一组文件名称.当File指向一个文件集时,就

装饰模式和Java IO

装饰模式 修饰模式(装饰模式),是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式.就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能. 装饰模式的UML如下所示: 装饰模式中有四个角色: Component 抽象构件,最基本.最核心.最原始的接口或抽象类 ConcreteComponent 具体构件的引用 Decorator 装饰角色, 持有对构件的引用 ConcreteDecorator 具体装饰角色 Java IO中的装饰模式 Java IO