之前是将下载的代码写在service中了,导出没有发现问题,后来想着写个工具类吧,把下载的部分代码放到了工具类中,结果出现跨域的问题,后来才意识到EasypoiUtil并没有注册到spring的beanFactory里面导致导出时没有经过过滤器所以才下载失败的。
因为我的过滤器中是有解决跨域的代码的,但是下载抽到工具类中导致失效了。所以我又在下载的代码中将跨域的代码添加上就可以了,如下
/**
* export导出请求头设置
*
* @param response
* @param workbook
* @param fileName
* @throws Exception
*/
public static void export(HttpServletResponse response, Workbook workbook, String fileName) throws Exception {
response.reset();
response.setContentType("application/x-msdownload");
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
response.setHeader("Content-disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName+".xlsx", "UTF-8"));
ServletOutputStream outStream = null;
try {
outStream = response.getOutputStream();
workbook.write(outStream);
} finally {
outStream.close();
}
}
工具类使用的时候一定要小心