SpringBoot打成jar包后,Excel模板下载问题
每次都是下载后打开提示文件损坏,直接上我的最终解决办法:
获取Excel模板文件名使用英文命名
=========================================
最初的代码采用的配置文件形式,获取文件路径
file.path.excel-folder=${template-location:E:/tjpj/doc/}
String filePath = pathConfig.getExcelFolder() + "台账模板.xlsx";
ClassPathResource resource = new ClassPathResource(filePath);
很明显这种路径在打包后就找不到了
其他尝试,仅供参考
String filePath = Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("")).getPath() + "template/assets-model.xlsx";
最终版:
InputStream fis = null;
try {
String filePath = "template/assets-model.xlsx";
fis = this.getClass().getClassLoader().getResourceAsStream(filePath);
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment; filename=" + java.net.URLEncoder.encode("assets-model", "UTF-8"));
byte[] b = new byte[100];
int len;
while ((len = fis.read(b)) > 0) {
response.getOutputStream().write(b, 0, len);
}
} catch (Exception e) {
} finally {
response.getOutputStream().flush();
response.getOutputStream().close();
fis.close();
}