@PostMapping("/template")
public AjaxResult downImportTemplate(HttpServletResponse response){
String filename = "importTemplate.xls";
byte[] buffer = new byte[1024];
ClassPathResource resource = new ClassPathResource("template/importTemplate.xls");
try (InputStream inputStream = resource.getInputStream(); ServletOutputStream outputStream = response.getOutputStream()){
response.setCharacterEncoding(StandardCharsets.UTF_8.toString());
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
response.setContentType("application/octet-stream");
while (inputStream.read(buffer) != -1){
outputStream.write(buffer);
}
} catch (IOException e) {
e.printStackTrace();
return AjaxResult.error("下载导入模板失败" + e.getMessage());
}
return AjaxResult.success();
}
解释一下:
String filename = "importTemplate.xls";
定义下载的文件名
ClassPathResource resource = new ClassPathResource("template/importTemplate.xls");
下载的路径(绝对路径)
InputStream inputStream = resource.getInputStream()
接收该路径文件下的流文件
response.setCharacterEncoding(StandardCharsets.UTF_8.toString());
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
response.setContentType("application/octet-stream");
响应处理
while (inputStream.read(buffer) != -1){
outputStream.write(buffer);
}
写入响应输出流