spring boot 返回文件流

所需依赖

java 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

完整的Controller代码

java 复制代码
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

@Controller
public class FileDownloadController {

    @GetMapping("/download")
    @ResponseBody
    public ResponseEntity<InputStreamResource> downloadFile() throws IOException {
        File file = new File("实际的文件路径");
        InputStream inputStream = new FileInputStream(file);
        InputStreamResource resource = new InputStreamResource(inputStream);

        HttpHeaders headers = new HttpHeaders();
        headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=实际的文件名");

        return ResponseEntity.ok()
                .headers(headers)
                .contentLength(file.length())
                .contentType(MediaType.APPLICATION_OCTET_STREAM)
                .body(resource);
    }
}
相关推荐
⑩-7 分钟前
简单业务异常类
java
乘风!10 分钟前
NSSM启动tomcat部署Java程序
java·服务器·后端·tomcat
BBB努力学习程序设计23 分钟前
Java 21虚拟线程与平台线程:JVM层面的深度对比与实现原理
java
代码无疆26 分钟前
学点java字节码更易于理解一些特殊的java语法效果
java·后端
BBB努力学习程序设计31 分钟前
Java 8日期时间API完全指南:告别Date和Calendar的混乱时代
java
不能只会打代码38 分钟前
力扣--3433. 统计用户被提及情况
java·算法·leetcode·力扣
知青先生43 分钟前
E9项目调试方式
java·ide
本地运行没问题1 小时前
从零散编译到一键打包:Maven如何重塑Java构建流程
java
10km1 小时前
java:延迟加载实现方案对比:双重检查锁定 vs 原子化条件更新
java·延迟加载·双重检查锁定
独自归家的兔1 小时前
千问通义plus - 代码解释器的使用
java·人工智能