1.springboot 提供下载excel接口(通过浏览器下载)
控制台报错:
下载文件成功:
2.网上解答:
response.getOutputStream()和 response.getWriter() 两个方法不能同时使用。
建议加上:
response.reset(); out.close();
但是我的代码中都有该方法,调用接口,还是报错。
private static void setBrowser(HttpServletResponse response, HSSFWorkbook workbook, String fileName) {
OutputStream out = null;
try {
//清空response
response.reset();
//设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
out = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/vnd.ms-excel;charset=gbk");
//将excel写入到输出流中
workbook.write(out);
out.flush();
out.close();
response.flushBuffer();
log.info("浏览器下载成功:{}", fileName);
} catch (Exception e) {
log.info("浏览器下载失败:{}", fileName);
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (Exception e) {
log.error("浏览器下载失败 ::: " + e.getMessage(), e);
}
}
}
}
3.我的解决方案
找到下载功能的Java代码,controller 方法中有返回值,这就是病根
改成:
下载成功:
控制台打印:



