概述:本文是 java 服務器端生成文件並下載的示例,並不完善,下載之后一般來說還需要刪除臨時文件。
注意:臨時文件存放在 /WEB-INF/tmp 目錄下,所以先要把 tmp 目錄建起來。
public InputStream getDownloadTest() throws Exception { HttpServletRequest request = getRequest(); // 得到上傳文件的保存目錄,將上傳的文件存放於WEB-INF目錄下,不允許外界直接訪問,保證上傳文件的安全 String savePath = request.getServletContext().getRealPath("/WEB-INF/tmp"); logger.debug("獲取到的/WEB-INF/tmp 路徑=== " + savePath); File tmpDir = new File(savePath); // 判斷上傳文件的保存目錄是否存在 if (!tmpDir.exists() && !tmpDir.isDirectory()) { tmpDir.createNewFile(); logger.debug(savePath + "目錄不存在,需要創建。"); // 創建目錄 tmpDir.mkdir(); } String fileWriteTime = DateFormat.DATE_TIME_WITHOUT_SECONDS.getCurrentDate(); String tmpFileName = savePath + "\\" + fileWriteTime + ".txt"; logger.debug("臨時文件名:===" + tmpFileName); File file = new File(tmpFileName); // 判斷上傳文件的保存目錄是否存在 if (!file.exists()) { file.createNewFile(); logger.debug("臨時文件創建不成功。"); } FileWriter fileWriter = new FileWriter(file, true); // 流的方式 BufferedWriter bufferWriter = new BufferedWriter(fileWriter); bufferWriter.write("文件寫入時間:\r\n" + fileWriteTime); bufferWriter.close(); // 第二種方式 /* * PrintWriter printWriter=new PrintWriter(fileWriter); * printWriter.println("文件寫入時間:\r\n"+ fileWriteTime); * printWriter.close(); */ fileWriter.close(); // 返回文件 HttpServletResponse response = getResponse(); response.addHeader("Content-Disposition", "attachment;filename=" + fileWriteTime + ".txt"); //response.setContentType("application/vnd.ms-excel;charset=gb2312"); //return new FileInputStream(file); //下面兩種方式都可以 return new FileInputStream(file); // return new FileInputStream(tmpFileName); }