发布日期:2025-01-04 11:16 点击次数:61
前言
最近遇到一个奇怪的需求,前端通过post请求下载压缩文件,同时会传给后端一些数据,用于生成压缩包。此时后端接口就不仅仅是生成压缩文件流输出给前端。而必须要有报错能力与异常处理能力。即如果后端报错,前端应该是下载不了文件流。
比较一般的解法
一般而言,Spring Boot生成文件流供前端下载,会直接将文件流写入到 HttpServletResponse.getOutputStream(),然而这样会有一个问题,无论后端如何报错,前端都能成功下载文件,因为 status=200。即如下写法:
分析原因
因为后端直接向OutputStream写入,会覆盖所有异常捕获,因此前端直接向data下取字节流数据即可。
正确解法
其实就是要后端能在错误时返回json数据,正确下载时直接取data下取字节流即可,所以使用 ResponseEntity 返回即可。
这里的异常,使用RestExceptionAdvice统一处理:
以上就是解决的全过程,可能写得有点片面,纯属一点个人实践中的见解。
总结
到此这篇关于SpringBoot下载文件的正确解法方式的文章就介绍到这了,更多相关SpringBoot下载文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!