response.getOutputStream();这样抛出文件流提供下载功能的,但下载不成功,提示文件已损坏。求解决

解决方案 »

  1.   

    我也在搞下载
    也出问题了
    我的是这样的
     String fileName = result.getString("path");
     response.reset();  
     response.setCharacterEncoding("UTF-8");
     response.setContentType("application/vnd.ms-excel");  
     response.setHeader("Content-Disposition", "attachment; filename=\""+ fileName + "\"");
     
     ServletOutputStream sos = response.getOutputStream();  
    //  PrintWriter writer = response.getWriter();
     BufferedInputStream fin = new BufferedInputStream(new FileInputStream(fileName));  
     byte[] content = new byte[1024];  
     int length;  
     while ((length = fin.read(content, 0, content.length)) != -1) {  
         sos.write(content, 0, length);  
     }  
     fin.close();  
     sos.flush();  
     sos.close();  
    但是现在我的前台都不弹出下载框,怎么弄啊
    你的前台是怎么做的?
      

  2.   


    filename = rs.getString("filename").trim();
    filesize = rs.getInt("filesize");
    response.setContentType("application/octet-stream");
    response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(filename.getBytes("gb2312"), "ISO8859-1") + "\";");
    // //attachment --- 作为附件下载
    response.addIntHeader("Content-Length", filesize);
    byte[] fileBuffer = new byte[filesize];
    InputStream iStream = rs.getBinaryStream("gdata");
    iStream.read(fileBuffer, 0, filesize);
    ServletOutputStream out = response.getOutputStream();
    out.write(fileBuffer);
    out.flush();
    out.close();
    我有个小下载功能是这样做的,文件是保存在数据库里的,当然之前我做测试的时候是放在本地的,都没有问题,部署了也可以,在ff和ie8,9下都没问题
      

  3.   

    我没有保存啊 ,也是数据库里的流直接流给网页下载了
    当然了,java会自己保存个临时文件,这个就管不到了
      

  4.   

    楼主解决了吗?我的也出损坏了,也是生成文件流后没保存本地 直接用response.getOutputStream().write后就出现文件已损坏的提示
    如果保存到本地的话 就没问题