收录日期:2019/03/19 04:29:50 时间: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只允许写入一次数据流

如何让checklistbox定位到当前正在操作的页面上 关于验证控件~ ODBC,读取 EXCEL表,如何 按照列读取,大家一般情况下是按行,一行行的读取,如果 列作为字段值,如何一列列的读取呢,有没有比较合适的方法,呵呵,谢谢了! 网站积分制度的一点看法 编写一个程序 读取 makefile文件,并且修改 如 GCCINC=/usr/sfw/include/c++/3.4.3 改为:如 GCCINC=//usr/sfw/include/c++/3.5.6 plugins目录下为啥有文件夹和文件同时存在? 这个简单功能如何实现 请问VC.NET下如何在PICUTREBOX里面调用IMAGELIST里面的图片? 用户控件属性问题,急. 插入或者更新数据库时候出错,大家帮忙看下. pl sql 中copy 命令不能用吗? ASP.NET动态生成超连接问题,在线等! 如何把一个已经存在的控件放到一个窗体里(API实现) 系统安全最大软肋到底是什么? 求救:为什么在IE里能正常浏览,在FIREFOX里却看不到呢? com是否必须注册在操作系统下呢? 怎么判断一个文档全部加载完了呢? 请教 如何做一个jsp页面 用于记录 最近一次Ant 的时间以及状态:“成功” 或者 \"失败\" javascript报缺少对象.......在线等........................急................跪求.................. 写打印程序时关于GetProfileString的问题 如何从程序向外拖放文件 求高人指点 vb调用vc dll参数返回字符问题?急... 如何讲解Visual Studio.Net 环境 如何把一个已经存在的控件放到一个窗体里(API实现) vs.net2005是否有自动整理html代码的选项? javascript链接文件的问题 请教 如何做一个jsp页面 用于记录 最近一次Ant 的时间以及状态:“成功” 或者 \"失败\" 如何锁住屏幕? 有没有命令行连接MS SQLSERVER2000的命令。