上传已经实现了啊。、、就是下载老出错!!
<%@ page contentType="text/html; charset=gb2312" language="java" 
import="java.util.*,org.lxh.smart.*,java.sql.*" errorPage="" %>
<jsp:useBean id="smart" scope="page" class="org.lxh.smart.SmartUpload">
</jsp:useBean>
<%
  
   SmartUpload su = new SmartUpload ();
  // 初始化
  su.initialize(pageContext); su.setContentDisposition(null);
  // 下载文件
 su.downloadFile("g:/11.txt");
%>
运行出错、、、
description The server encountered an internal error () that prevented it from fulfilling this request.exception 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:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)怎么回事???

解决方案 »

  1.   

    <% 
      out.clearBuffer(); // 增加这么一句
      SmartUpload su = new SmartUpload (); 
      

  2.   

    <%@ page contentType="text/html;charset=gb2312"
    import="com.jspsmart.upload.*" import="java.sql.*"%>
    <jsp:useBean id="db" class="jizhetuan.connectDB" />
    <%
    ResultSet rs = null;
    String sql = "select * from news";
    rs = db.executeQuery(sql);
    // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 初始化 su.initialize(pageContext);
    // 设定contentDisposition为null以禁止浏览器自动打开文件, //保证点击链接后是下载文件。若不设定,则下载的文件扩展名为 //doc时,浏览器将自动用word打开它。扩展名为pdf时, //浏览器将用acrobat打开。 su.setContentDisposition(null); // 下载文件
    //String content = (request.getParameter("content")==null?"":request.getParameter("content"));
    try {
    if (rs.next()) {
    String lu = rs.getString("content");
    String str = "images/upload/" + lu;
    System.out.print("jf222222222222222222222222222222" + str);
    su.downloadFile(str);
    }
    } catch (Exception e) {
    e.printStackTrace();
    } try {
    db.closeDB();
    } catch (Exception e) {
    e.printStackTrace();
    }
    %>
      

  3.   


    呵呵!我不信。你要是明白
    getOutputStream() has already been called for this response 这句话的意思,就会很容易的搞定这个程序。我给你一个简化版
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*,org.lxh.smart.*,java.sql.*" errorPage="" %>
    <%
      out.clearBuffer();
      SmartUpload su = new SmartUpload ();
      // 初始化
      su.initialize(pageContext);  su.setContentDisposition(null);
      // 下载文件
      su.downloadFile("g:/11.txt");
    %> 
      

  4.   

    我前两天也遇到这个问题:getOutputStream() has already been called 
    解决办法是,在下载的代码最后加上如下2行:
             out.clear();
            out = pageContext.pushBody();
    因为jsp编译成.java文件之后会在最后加一句,哪句记不清了反正加上这两句就不冲突了!