Java Web 生成临时文件并下载(原)

本文介绍了一个Java服务器端生成文件并提供下载的方法。通过在服务器端创建一个临时文件,然后通过HTTP响应将该文件提供给客户端进行下载。文章详细展示了如何创建临时文件、设置HTTP响应头以及提供文件下载的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

转载于:https://www.cnblogs.com/quietwalk/p/7697876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值