程序代码<%......%><%.....%>之间不能有东西间隔就不会出错了。要是<%......%><%.....%>之间有空格:<%......%>空格<%.....%>
                     或者回车:<%......%>回车<%.....%>
                     或者其他:<%......%>其他<%.....%>
就会出现这种错误要把jsp页中所有的空行删除
执行下载的页面,在Java脚本范围外(即<% ... %>之外),不要包含HTML代码、空格、回车或换行等字符,有的话将不能正确下载。不信的话,可以在源码中%><%之间加入一个换行符,下载一下,保证出错。因为它影响了返回给浏览器的数据流,导致解析出错。
改为servlet好一点

解决方案 »

  1.   

    SmartUpload su = new SmartUpload();
    su.initialize(pageContext);
    su.setContentDisposition(null);
    String fpath = new String(request.getParameter("fpath").getBytes("ISO-8859-1"));
    String fname = new String(request.getParameter("fname").getBytes("ISO-8859-1"));
    su.downloadFile(fpath + fname);
      

  2.   

    http://community.csdn.net/Expert/topic/3730/3730320.xml?temp=.1628229
    下载不要用组件也可以的!
    东西不要过多依赖组件!
      

  3.   

    下载文件的方法(不使用SMARTUPLOAD):(转)  java.io.File file=new java.io.File(要下载的文件名);
      if(!file.exists()) {out.println("文件不存在!");return;}  out.clear();
      response.setContentType("application/x-zip-compressed");
      response.setHeader("Content-disposition",filename="+new String(file.getName().getBytes(),"ISO8859_1"));
      DataInputStream dis=new DataInputStream(new FileInputStream(file));
      OutputStream os=response.getOutputStream();  byte[] buf=new byte[1024];
      int left=(int)file.length();
      int read=0;
      while(left>0)
      {read=dis.read(buf);
       left-=read;
       os.write(buf,0,read);
      }
      dis.close();
      os.close();
      out.close();
      return;
    注意最后一行return;如果是在JSP代码中,return;之后不要有空行,否则编译通不过。
    也可以使用if(true) return;
      

  4.   

    to tom2005(快乐着)我改成Servlet,但是su.initialize(pageContext);pageContext在servlet里出错,应怎么获得?
      

  5.   

    看一下 yxhzj(余华[学习J2EE中])给的页面,可能对你有点帮助,我就是靠他给的页面解决的问题
      

  6.   

    我写了这样的一个Servletpublic void doGet(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            response.setContentType(CONTENT_TYPE);
            PrintWriter out = response.getWriter();
            String fileName=(String)request.getParameter("fileName");
            out.println(fileName);        SmartUpload su=new SmartUpload();
            javax.servlet.jsp.PageContext pageContext =javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this,request,response, null, true, 8192, true);
            su.initialize(pageContext);
            su.setContentDisposition(null);        try
            {
            su.downloadFile("Upload/Files/"+fileName);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
    .....什么也不出现,奇怪然后我按tom2005(快乐着)把原来的download.jsp文件里的任何空格、回车去掉,成功!问题虽然解决了,但是为什么这个Servelt不能工作呢?
      

  7.   

    好了!我把以下几行注释掉后即可以了谢谢各位,结账!
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            //response.setContentType(CONTENT_TYPE);
            //PrintWriter out = response.getWriter();
            String fileName=(String)request.getParameter("fileName");
            //out.println(fileName);        SmartUpload su=new SmartUpload();
            javax.servlet.jsp.PageContext pageContext =javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this,request,response, null, true, 8192, true);
            su.initialize(pageContext);
            su.setContentDisposition(null);        try
            {
            su.downloadFile("Upload/Files/"+fileName);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
      

  8.   

    请 tom2005(快乐着) 到原帖(100分那个)随便说什么,我好给分,这个帖分值太少,OK?