Java Web 生成臨時文件並下載(原)


概述:本文是  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);
        
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM