收录日期:2018/12/11 02:19:08 时间:2016/05/18 03:14:57 标签:Web 开发
String url =request.getParameter("id")
String path = a.rebuild(id) //rebuild()把id转化为绝对路径
String name =  path.substring(path.lastIndexOf("/")+1,path.length());//取得文件名
try {
     response.reset();
     response.setContentType("bin");
     response.setHeader("Content-Disposition", "attachment; filename="+new String(name.getBytes(),"iso8859-1"));
     ServletOutputStream os = response.getOutputStream();
     FileInputStream in = new FileInputStream(url);
     byte[] data = new byte[1024];
     int temp = -1;
     while((temp=in.read(data))!= -1){
os.write(data,0,temp);
os.flush();
     }
     in.close()
     os.close();
      } catch(Exception e) {
out.print(e.toString());
}
偶尔可以下载下来会出现getOutputStream() has already been called for this response,但是更经常出现getOutputStream() has already been called for this response且下载失败
这一般会是什么错误呢?如何解决阿
错误信息
org.apache.jasper.JasperException: getOutputStream() has already been called for this response
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)

你这段代码是不是在jsp中执行的?在jsp中执行response.getoutprintstream()是会遇到这样的错误的,你试着把它写成servlet看行不行
兄弟,你的这个问题有没有遇到和是的解决办法,告诉我一下,我们可以在msn上交流一下
toger819@hotmail.com
出现getOutputStream() has already been called for this response
是因为已经用过一次了
response只允许写入一次数据流

在ttreeview内,要将一个node 拖动,该怎么办?请给一点例子代码 菜鸟求救 请问,哪里有得下载微软的\"Project professional 2002\"软件?? 救急,小弟硬盘中文件名突然变为 不可识别 的乱码………………? 如何向CVS中导入文件? 简单问题,盼解答,是关于TEdit控件应用的小问题. 关于安装程序制作的问题 问,谢谢!! 有女朋友的情人节,一个人的情人节,进来了! 请看下面一行代码 SQL关于带参数的LIKE语句问题. 如何改变wizard的标题? 各位高手,能介绍几本VC/C++入门的书吗?最好有下载网址,多谢啦! 提问两个问题!多谢帮忙 关于安装程序制作的问题 菜鸟求救 主题:转个搞笑的 电影<英雄>中的“大风” 有哪位仁兄可以帮我??? 谁可以帮我? 谁可以帮我? 谁可以帮我? 用程序来管理虚拟主机的高手请进来 谁可以帮我? 谁可以帮我? servlet调用问题 在这个特别的日子,献分给NO情人的朋友……同时偶还差一分即可多戴一顶绿帽子 如何判断路径是否有效? 自己建了一个类,大家看看,哪里错了(有原码) 我的個人ftp,請各位有甚麼可以分享請上傳上去,謝謝~! 用JBuilder里生成的EJB测试客户端,怎样才能在JBuilder外运行