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("下载结果失败");
        }
    }
相关推荐
JarvanMo22 分钟前
Dart 3.13:小版本,大动作
前端
纯粹的热爱25 分钟前
Ubuntu 安装 Node.js 22.x(通过 NodeSource 官方源)
前端
Highcharts27 分钟前
如何选择正确的图表:驱动理解和洞察力的三部分框架(第3部分)
前端·数据可视化
JavaGuide1 小时前
Github 史诗级故障,与此同时,Cursor 版「GitHub」正式上线!
前端·后端
郭邯1 小时前
用 AI 写了一个经纬度格式转换工具,从需求到落地的完整过程
前端
不一样的少年_1 小时前
修了 Bug、做了重构,为什么老板还是觉得你没产出?
前端·后端·程序员
马可家的菠萝1 小时前
Vue3 + Canvas 手绘笔记工程化实践:别把画布只当成一张 PNG
前端·vue.js·算法
IMPYLH1 小时前
HTML 的 <h1>–<h6> 元素
前端·javascript·html
IMPYLH1 小时前
HTML 的 <head> 元素
前端·html
卸任1 小时前
AI英语学习助手:从翻译工具到 AI 英语学习助手
前端·electron