java下载文件流,不生成中间文件。

java下载文件流,不生成中间文件。

    • 代码设计:
    • 代码实现

代码设计:

从前端获取的数据经过后端加工后,生成文件流,并返回前端,(不生成中间文件,注意内存,记得关闭流)

代码实现

java 复制代码
    @ApiOperation(value = "下载文件", notes = "")
    @PostMapping("/getDownLoadScriptFile")
    public void getDownLoadScriptFile(@RequestBody ParamsObject vo, HttpServletRequest request, HttpServletResponse response) throws Exception {
        SysUserEntityVo uc = (SysUserEntityVo) request.getAttribute("UC");
        gClientScriptService.getDownLoadScriptFile(vo, uc,response);
    }
java 复制代码
  @Override
    public void getDownLoadScriptFile(ParamsObject vo, SysUserEntityVo uc, HttpServletResponse response) throws Exception {
        String fileContent = vo.getFileContent();
        String fileName = vo.getFileName();
        String encodeFileName = URLEncoder.encode(fileName);
        ServletOutputStream out = response.getOutputStream();

        try {
            //设置允许跨域的key
            response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
            //文件名有","等特殊字符发送到前端会报错,用""括起来解决
            response.addHeader("Content-Disposition", "attachment;filename=\"" + encodeFileName + "\"");
            //设置文件大小
            response.addHeader("Content-Length", "" + fileContent.getBytes().length);
            //设置文件名,避免问题,这个也用""括起来
            response.setHeader("filename,", "filename=\"" + encodeFileName + "\"");
            //设置文件类型
            response.setContentType("application/octet-stream");

            out.write(fileContent.getBytes(StandardCharsets.UTF_8));
            out.flush();

        } catch (Exception e) {
            throw e;
        } finally {
            try {
                out.close();
            } catch (Exception e) {
                throw e;
            }

            try {
                out.close();
            } catch (Exception e) {
                throw e;
            }
        }
    }
相关推荐
马士兵教育5 分钟前
AI大模型教程【LangChainV1.0+LangGraph V1.0】企业级Agent全集开发实战!
开发语言·人工智能·考研·面试·职场和发展
月亮!6 分钟前
6大AI测试工具极限压测:微软TuringAI竟率先崩溃
java·人工智能·python·测试工具·microsoft·云原生·压力测试
superantwmhsxx7 分钟前
JAVA系统中Spring Boot 应用程序的配置文件:application.yml
java·开发语言·spring boot
左左右右左右摇晃8 分钟前
Java线程池工作原理与回收机制
java·jvm·数据结构
郝学胜-神的一滴9 分钟前
Pytorch张量核心运算精讲:从类型转换到数值操作全解析
开发语言·人工智能·pytorch·python·深度学习·程序人生·机器学习
向上_503582919 分钟前
两个moudle访问一个lib包
android·java·kotlin
Yolo_TvT11 分钟前
C++:缺省参数
开发语言·c++·算法
云烟成雨TD12 分钟前
Spring AI 1.x 系列【18】深入了解更多的工具规范底层组件
java·人工智能·spring
希望永不加班12 分钟前
SpringBoot 应用启动失败常见原因与排查思路
java·spring boot·后端·spring
Sgf22714 分钟前
第7章 文件操作
服务器·开发语言·数据库·python