JSP中文件下载

//      response.reset();//可以加也可以不加
      response.setContentType("application/x-download");
      String filedownload = filepath;
      String filedisplay = filename;
      filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
      response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);

      OutputStream outp = null;
      FileInputStream in = null;
      try
      {
          outp = response.getOutputStream();
          in = new FileInputStream(filedownload);

          byte[] b = new byte[1024];
          int i = 0;

          while((i = in.read(b)) > 0)
          {
              outp.write(b, 0, i);
          }
          outp.flush();
      }
      catch(Exception e)
      {
          System.out.println("Error!");
//          e.printStackTrace();
      }
      finally
      {
          if(in != null)
          {
              in.close();
              in = null;
          }
          if(outp != null)
          {
              outp.close();
              outp = null;
          }
      }

 filename是下载完成后的文件名,filepath是所要下载文件的绝对路径,另外我发现这段代码会报错,错误如下:

2010-10-8 15:06:36 org.apache.catalina.core.ApplicationContext log
信息: getOutputStream() has already been called for this response

 在网上查了下资料,是因为没有很好的处理out对象的原因,加上

 out.clear();
 out = pageContext.pushBody();

 这2行代码就行了。加在哪就不用我多说了吧。。。。

你可能感兴趣的:(apache,jsp)