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行代码就行了。加在哪就不用我多说了吧。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值