人生中最难过的一天。Jsp 中下载文件问题!

问题下载的下的文件比原始文件大,导致验证文件出错

原始代码

<%@page import="java.io.*"%>  --空格行

 String gz_file_name = "/tmp/";
 if ("0".endsWith(type)) {
  String order_no = request.getParameter("order_no");
  gz_file_name = gz_file_name + order_no + ".zip";

 } else {
  String certificate_file = request.getParameter("certificate_file");
  gz_file_name = gz_file_name + certificate_file + ".zip";
 }
 File file = new File(gz_file_name);
 if (file.exists()) {
  String fileName = file.getName();
  InputStream is = new FileInputStream(file);
  //response.reset();
  OutputStream s = response.getOutputStream();
        BufferedOutputStream output   =   new   BufferedOutputStream(response.getOutputStream());  
        BufferedInputStream input   =   new   BufferedInputStream(is);     
  response.setContentType("application/octet-stream");
  //response.setContentLength((int) file.length());
  System.out.println("3333333333333");
  System.out.println("length====="+file.length());
  response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
  int bytesRead = 0;
  byte[] buffer = new byte[4096];
  while ((bytesRead = input.read(buffer,   0,   4096)) != -1) {
   output.write(buffer,0,bytesRead);//
  }
  System.out.println("xdmmmmmmmmmmmmmmmmmmmmmmmsssssddddffeeff");
  output.close();
  input.close();
  is.close();
  //os.flush();
  os.close();
  response.flushBuffer();
 }
%>

 

Jsp中用流直接下载文件,整个jsp页面中的空格行都被写到流中。导致文件比原始文件大

改成如下:

        String type = request.getParameter("type");  --合在在一行

         String gz_file_name = "/tmp/";

         if ("0".endsWith(type)) {

                   String order_no = request.getParameter("order_no");

                   gz_file_name = gz_file_name + order_no + ".zip";

 

         } else {

                   String certificate_file = request.getParameter("certificate_file");

                   gz_file_name = gz_file_name + certificate_file + ".zip";

         }

         File file = new File(gz_file_name);

         if (file.exists()) {

                   String fileName = file.getName();

                   InputStream is = new FileInputStream(file);

                   //response.reset();

                   OutputStream s = response.getOutputStream();

        BufferedOutputStream output   =   new   BufferedOutputStream(response.getOutputStream());  

        BufferedInputStream input   =   new   BufferedInputStream(is);               

                   response.setContentType("application/octet-stream");

                   //response.setContentLength((int) file.length());

                   System.out.println("3333333333333");

                   System.out.println("length====="+file.length());

                   response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

                   int bytesRead = 0;

                   byte[] buffer = new byte[4096];

                   while ((bytesRead = input.read(buffer,   0,   4096)) != -1) {

                            output.write(buffer,0,bytesRead);//

                   }

                   System.out.println("xdmmmmmmmmmmmmmmmmmmmmmmmsssssddddffeeff");

                   output.close();

                   input.close();

                   is.close();

                   //os.flush();

                   os.close();

                   response.flushBuffer();

         }

%>

 

这个文件折腾了我一天。哎。。难受!!!!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7551038/viewspace-616239/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7551038/viewspace-616239/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值