weixin_42305464 2009-04-16 21:42
浏览 237
已采纳

jspSmartUpload组件实现下载出现异常, 求教,谢。

tem.html

点击下载

upload_action.jsp
<%
String load_path=null;//文件路径
//String file_name=new String(request.getParameter("file_name").getBytes("ISO-8859-1"));
//out.println(file_name);

//if(null==file_name)response.sendRedirect("error.jsp");
//load_path="upload/"+file_name;
load_path="upload/新建文本文档 (3).txt";
out.println(load_path);

SmartUpload su = new SmartUpload();

su.initialize(pageContext);

su.setContentDisposition(null);
    // 下载文件
su.downloadFile(load_path);

%>

出现的异常:
org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.catalina.connector.Response.getWriter(Response.java:610)
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
org.apache.jsp.file_005fopration.file_005fload_jsp._jspService(file_005fload_jsp.java:95)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

谢谢。。
[b]问题补充:[/b]
没。。 我重启TOMCAT, 然后就上面两个文件, 也出现上面的异常。
[b]问题补充:[/b]
呵呵。。 初学。。 书上看的用下。。
[b]问题补充:[/b]
貌似看的书老了,, 还是自己写个类直接实现好。。。 谢谢大家的回答。。

  • 写回答

5条回答 默认 最新

  • pmalex 2009-04-16 22:59
    关注

    这是因为服务器会向response中写东西造成的,解决方式是将下面代码的此句response.reset();的注释打开,这样在使用response时先将其重置。

    [code="java"]
    <%@ page import="java.io.OutputStream" %>
    <%@ page import="java.io.FileInputStream" %>
    <%
    //response.reset();
    //filePath为全路径:D:/upload/a.doc
    String path = request.getParameter("filePath");
    int k = path.lastIndexOf("/");
    String name = path.substring(k + 1 , path.length());
    response.setContentType("unknown");
    response.addHeader("Content-Disposition","filename=\"" + name + "\"");
    try {
    OutputStream os = response.getOutputStream();
    FileInputStream fis = new FileInputStream(path);
    byte[] b = new byte[1024];
    int i = 0;
    while((i = fis.read(b)) > 0) {
    os.write(b, 0 ,i);
    }
    fis.close();
    os.flush();
    os.close();
    } catch(Exception e) {
    e.printStackTrace();
    }
    %>[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。