IE11内核的浏览器vue接收后台返回的文件流导出文件为空文件,浏览器是有内容的,什么原因?
时间: 2024-03-05 20:50:13 浏览: 129
vueCli3.0文件上传后,后端返回流,前端转换成pdf预览的3种方式
5星 · 资源好评率100%
这个问题可能是由于浏览器对响应头 `Content-Type` 的处理方式不同导致的。在某些浏览器中,如果 `Content-Type` 的值不是常见的值(如 `application/octet-stream` 或 `application/vnd.ms-excel`),浏览器可能会将响应内容当做文本处理,而不是下载文件。
解决方法是在服务端设置响应头 `Content-Type` 为 `application/octet-stream` 或 `application/vnd.ms-excel`,这样浏览器就会将响应内容当做文件下载。另外,建议同时设置响应头 `Content-Disposition`,以便浏览器能够正确地显示文件名和文件类型。
以下是一个示例代码片段,演示如何在 Spring Boot 中设置响应头,将响应内容导出为 Excel 文件:
```java
@GetMapping("/download")
public void download(HttpServletResponse response) throws IOException {
// 查询数据
List<User> userList = userService.getAllUsers();
// 创建 Excel 文件
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Users");
// ...
// 将 Excel 文件写入响应输出流
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=users.xlsx");
workbook.write(response.getOutputStream());
}
```
在上述代码中,`response.setContentType("application/octet-stream")` 设置响应头 `Content-Type` 为 `application/octet-stream`,`response.setHeader("Content-Disposition", "attachment; filename=users.xlsx")` 设置响应头 `Content-Disposition`,表示将响应内容作为附件下载,并指定下载文件的文件名。
阅读全文