springboot把 EXCEL 文件以流的形式返回给前端

1.controller层

java 复制代码
    @GetMapping(ReviewUrls.API_DOWNLOAD_REVIEW_RESULT)
    public Response<Void> downloadReviewResult(HttpServletResponse response) {
        resultService.downloadReviewResult(response);
        return Response.ok();
    }

2.service层

java 复制代码
    public void downloadReviewResult(HttpServletResponse response) {
        /*
         逻辑:
         1. 以文件流的形式返回
         */
        // [1] 以文件流的形式返回
        String filePath = "test.xslx";
        try (FileInputStream inputStream = new FileInputStream(filePath);
             ServletOutputStream outputStream = response.getOutputStream();
        ) {
            // 设置请求头
            response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            outputStream.flush();
        } catch (Exception e) {
            throw new RuntimeException("下载结果失败");
        }
    }
相关推荐
仙俊红3 分钟前
Spring Boot `@Configuration` 与 `@Component` 笔记
java·spring boot·笔记
爱隐身的官人29 分钟前
爬虫基础学习-爬取网页项目(二)
前端·爬虫·python·学习
Jackson@ML1 小时前
使用字节旗下的TREA IDE快速开发Web应用程序
前端·ide·trea
计算机学姐3 小时前
基于SpringBoot的社团管理系统【2026最新】
java·vue.js·spring boot·后端·mysql·spring·mybatis
烛阴4 小时前
解锁 TypeScript 的元编程魔法:从 `extends` 到 `infer` 的条件类型之旅
前端·javascript·typescript
前端开发爱好者4 小时前
弃用 ESLint + Prettier!快 35 倍的 AI 格式化神器!
前端·javascript·vue.js
CodeLongBear4 小时前
Spring Boot 与 Spring MVC 的区别与联系:从本质到实践
spring boot·spring·mvc
vivi_and_qiao4 小时前
HTML的form表单
java·前端·html
骑驴看星星a5 小时前
Vue中的scoped属性
前端·javascript·vue.js
四月_h5 小时前
在 Vue 3 + TypeScript 项目中实现主题切换功能
前端·vue.js·typescript