遇见打成Jar包后运行,下载Excel模板文件,内容为空,用以下方式下载解决此问题
(暂未发现什么问题造成的)
/**
* @Description: 下载文件
* @Date: 2022/2/8
* @Param [request, response, filePath:"文件路径 "/businessMapper/downloadImportTemplate.xlsx";", fileName:"文件全部名称 "导入模板.xlsx";"]
* @Return: void
**/
public static void downloadTemplate(HttpServletRequest request, HttpServletResponse response, String filePath, String fileName) throws IOException {
ClassPathResource resource = new ClassPathResource(filePath);
//0.文件存在才下载
if (resource.exists()) {
OutputStream out = null;
InputStream in = null;
try {
//1.读取要下载的内容
in = resource.getInputStream();
//2.告诉浏览器下载的方式以及一些设置
//解决文件名乱码问题,获取浏览器类型,转换对应文件名编码格式,IE要求文件名必须是utf-8, firefox要求是iso-8859-1编码
String agent = request.getHeader("user-agent");
if (agent.contains("FireFox")) {
fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
} else {
fileName = URLEncoder.encode(fileName, "UTF-8");
}
//3.设置下载文件的mineType,告诉浏览器下载文件类型
String mineType = request.getServletContext().getMimeType(fileName);
response.setContentType(mineType);
//4.设置一个响应头,无论是否被浏览器解析,都下载
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
//5.将要下载的文件内容通过输出流写到浏览器
out = response.getOutputStream();
int len = 0;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192813.html