前端发送请求下载excel文件,总是提示“部分内容有问题”或“文件格式或文件扩展名无效”。
这两个错误的原因是文件内容与文件格式不(完全)匹配。
前端发送请求 -> 后端响应数据 -> 前端处理响应数据
1. 在这个过程中,前端发送的请求和其他请求一样,没有什么特殊的。
2. 后端响应数据:数据库检索数据后,要按照指定格式相应给后端。
以使用 apache poi 导出excel文件为例,如果框架使用不当,那么会导致文件内容有问题,即提示“部分内容有问题”。除此之外,要设置 响应头 中的 content-type 与文件内容相匹配,否则也会提示或报错,如 XSSFWorkbook 对应 .xlsx 格式,content-type 要设置为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet。
我们现在开发往往会将返回结果封装一个响应对象(如 ResponseResult),习惯性的返回一个包含状态的对象。当我们需要下载文件时,由于文件是二进制流,不能直接放在响应对象里(无法解析)。往往我们会将文件直接写入 响应体 ,通过 HttpServletResponse 对象调用 getOutputStream 方法获取输出流,将文件内容写入该输出流中。
3. 前端接收到响应处理响应数据时,要注意与后端设置的文件类型相同。以使用 Blob 接收响应数据为例,要设置 type 与响应头 content-type 一致。
4万+

被折叠的 条评论
为什么被折叠?



