关键字:
java,springboot,下载,上传,response,StackOverflow
问题描述:
报错信息(部分):Cannot forward to error page for request [/newsList] as the response has already been committed. As a result, the response may have the wrong status code.用java做一个常规下载/预览功能时候,功能都可以正常实现,但是控制台会报错。一个是上面列的,另一个是StackOverflow。
原因分析:
目前具体原因未知,初步判断是框架获取HttpServletResponse原因,将参数获取方式改为servletRequestAttributes.getResponse()方式,问题解决。解决方案:
问题代码
@GetMapping("/download/{id}")
public void download(@PathVariable Integer id, HttpServletResponse response) {
response.setContentType("application/force-download");
response.setContentType("multipart/form-data");
// 设置文件名,attachment强制性下载
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
//其他省略
.....
}
修改后代码
@GetMapping("/download/{id}")
public void download(@PathVariable Integer id) {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = servletRequestAttributes.getResponse();
response.setContentType("application/force-download");
response.setContentType("multipart/form-data");
// 设置文件名,attachment强制性下载
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
//其他省略
.....
}