zoukankan      html  css  js  c++  java
  • Java Web 生成临时文件并下载

    转自:

    Java Web 生成临时文件并下载

    概述:本文是  java 服务器端生成文件并下载的示例,并不完善,下载之后一般来说还需要删除临时文件。

    注意:临时文件存放在 /WEB-INF/tmp 目录下,所以先要把  tmp 目录建起来。

    public InputStream getDownloadTest() throws Exception
        {
            HttpServletRequest request = getRequest();
            
            // 得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
            String savePath = request.gerSession().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("文件写入时间:
    " + fileWriteTime);
            bufferWriter.close();
            
            // 第二种方式
            /*
             * PrintWriter printWriter=new PrintWriter(fileWriter);
             * printWriter.println("文件写入时间:
    "+ 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);
            
        }
  • 相关阅读:
    .Net 中double相加的困惑
    关于内存资源消耗快的问题
    内存资源消耗快的问题
    跨线程更新窗体
    .Net实现双缓冲
    TypeConverter
    emf文件的导入
    在资源中存放图象与emf文件的显示
    笔记java中nextLine方法没有输入就跳过了
    Silverlight Triggers、Actions 和 Behaviors
  • 原文地址:https://www.cnblogs.com/libin6505/p/10154738.html
Copyright © 2011-2022 走看看