通过SERVLET下载,但是遇到了无法下载的问题。

我在用servlet写了一个下载功能,先把文件打包成RAR,然后通过SERVLET下载,但遇到了无法下载的问题。

代码是:

  1. public void exportDown(HttpRequest request, HttpServletResponse response,  

  2.             User user) throws ServletException, IOException {  

  3.         ExportLogApp app = new ExportLogApp(  

  4.                 "from Test1 where 1=1 and id <1001 ");  

  5.         int i = app.exportDownRAR(user.getId(), null, null);  

  6.         if (i == app.LOG) {  

  7.             user.addLog("数据交换", "导出下载数据", "用户[" + user.getId() + "]导出数据成功!");  

  8.             String filePath = app.getRARpath_save() + File.separator  

  9.                     + app.getRARname_save() + ".rar";  

  10.             filePath = filePath.replaceAll("/", "\\\\");  

  11.             // 定义输出类型(下载)  

  12.             response.setContentType("application/force-download");  

  13.             // 定义输出文件头  

  14.             response.setHeader("Content-Disposition", "attachment;filename=\""  

  15.                     + app.getRARname_save() + ".rar\"");  

  16.   

  17.             File file = new File(filePath);  

  18.             int len = (int) file.length();  

  19.   

  20.             byte[] buf = new byte[len];  

  21.             FileInputStream fis = new FileInputStream(file);  

  22.             OutputStream out = response.getOutputStream();  

  23.             len = fis.read(buf);  

  24.             out.write(buf, 0, len);  

  25.             out.flush();  

  26.             out.close();  

  27.             fis.close();  

  28.             file.delete();  

  29.   

  30.         } else if (i == app.LOG_ERROR) {  

  31.             user.addLog("数据交换", "导出下载数据", "用户[" + user.getId() + "]导出数据失败!");  

  32.             PrintWriter out = response.getWriter();  

  33.             out.println("<script language='javascript'>");  

  34.             out.println("alert('导出数据出错,请联系管理员!');");  

  35.             out.println("window.location.href='../expert/expert_account.jsp';");  

  36.             out.println("window.close()");  

  37.             out.println("</script>");  

  38.         } else if (i == app.NO_DATA) {  

  39.   

  40.         }  

  41.     }  

 请帮我解答下,为什么会这样,我测试用的浏览器是IE7.


叮当猫咪
浏览 150回答 2
2回答

白衣非少年

1,导出之前加response.reset().&nbsp;2,导出之后 加return;试试。

慕尼黑的夜晚无繁华

byte[] buf = new byte[len];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream fis = new FileInputStream(file);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputStream out = response.getOutputStream();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len = fis.read(buf);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.write(buf, 0, len);&nbsp;&nbsp;你都没有控制文件读写结束循环控制,这样能下载全部的文件内容嘛,加上什么时候读写文件结束判断
打开App,查看更多内容
随时随地看视频慕课网APP