private String downloadFile(HttpServletRequest request, HttpServletResponse response,String str) { File file = null; FileOutputStream fos = null; PrintStream ps = null; FileInputStream fis = null; BufferedInputStream bis = null; ServletOutputStream out = null; try { //建立临时文件并写入内容 file = File.createTempFile("test", ".txt"); fos = new FileOutputStream(file); ps = new PrintStream(fos); //写入内容为追加 ps.print(str); //end //将文件转换为流 out = response.getOutputStream(); request.setCharacterEncoding("UTF-8"); int buffer = 1024 * 10; byte data[] = new byte[buffer]; //获取文件输入流 fis = new FileInputStream(file); int read; bis = new BufferedInputStream(fis, buffer); //拼装请求头 response.setContentType("application/OCTET-STREAM"); response.setHeader("Content-Disposition", "attachment; filename=test.txt"); while ((read = bis.read(data)) != -1) { out.write(data, 0, read); } } catch (Exception e) { try { ps.close(); //关闭流 fis.close(); out.close(); bis.close(); file.deleteOnExit(); //当程序退出时,删除临时文件 } catch (IOException ex) { ex.printStackTrace(); } e.printStackTrace(); } finally { try { ps.close(); //关闭流 fis.close(); out.close(); bis.close(); file.deleteOnExit(); //当程序退出时,删除临时文件 } catch (IOException ex) { ex.printStackTrace(); } } return ""; }
注:下载文件提交方式必须是form提交,ajax提交不能调用浏览器下载ajax