java实现本地文件转文件流发送到前端

java实现本地文件转文件流发送到前端

Controller

java 复制代码
  public void export(HttpServletResponse response) {
   // 创建file对象
      response.setContentType("application/octet-stream");
      // 文件名为 s
      response.setHeader("Content-Disposition", "attachment;fileName=" + s);
      FileUtils.writeBytes(fileName, response.getOutputStream());
  }

FileUtils

java 复制代码
 public static void writeBytes(String filePath, OutputStream os) throws IOException{
        FileInputStream fis = null;
        try
        {
            File file = new File(filePath);
            if (!file.exists())
            {
                throw new FileNotFoundException(filePath);
            }
            fis = new FileInputStream(file);
            byte[] b = new byte[1024];
            int length;
            while ((length = fis.read(b)) > 0)
            {
                os.write(b, 0, length);
            }
        }
        catch (IOException e)
        {
            throw e;
        }
        finally
        {
            IOUtils.close(os);
            IOUtils.close(fis);
        }
    }

如果是临时文件需要删除

controller

java 复制代码
  public void repairStatisticListExport(HttpServletResponse response) {
   // 创建file对象
      response.setContentType("application/octet-stream");
      // 文件名为 s
      response.setHeader("Content-Disposition", "attachment;fileName=" + s);
      FileUtils.writeBytes(fileName, response.getOutputStream());
      FileUtils.deleteFile(fileName);
  }

deleteFile方法

java 复制代码
  public static boolean deleteFile(String filePath) {
    boolean flag = false;
    File file = new File(filePath);
    // 路径为文件且不为空则进行删除
    if (file.isFile() && file.exists()) {
      file.delete();
      flag = true;
    }
    return flag;
  }

临时文件路径

java 复制代码
  public static String getDefaultBaseDir() {
    String os = System.getProperty("os.name");
    if (os.toLowerCase().startsWith("windows")) {
      return "C:/uploadPath/";
    } else if (os.toLowerCase().startsWith("linux")) {
      return "/home/uploadPath/";
    }
    return "/home/uploadPath/";
  }
相关推荐
摇滚侠12 分钟前
JAVA 项目教程《黑马商城-Redis 篇》,分布式架构项目,从开发到部署
java·redis·分布式
中年程序员一枚29 分钟前
spring-cloud-starter-openfeign现实中的运行逻辑
java·spring boot·后端
子超兄37 分钟前
线程池相关问题
java·开发语言
清水白石0081 小时前
Python 并发三剑客:多线程、多进程与协程的实战抉择
java·服务器·python
想搞艺术的程序员2 小时前
Java Survivor区学习笔记
java·笔记·学习·垃圾回收
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于SSM在线考试系统的设计与实现为例,包含答辩的问题和答案
java
吾诺2 小时前
Java进阶,时间与日期,包装类,正则表达式
java·mysql·正则表达式
ole ' ola2 小时前
lambda表达式
java·前端·jvm
蜡台2 小时前
Flutter 安装配置
android·java·flutter·环境变量
空空潍2 小时前
保姆级实战教程:Maven私服Nexus搭建
java·maven·nexus