在maven中默认只能读取resources文件夹下的资源,即使在resources下的其他文件夹内的资源,也不可以正常下载使用,这时候可以在pom文件中添加maven-resources-plugin这个插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
文件下载接口正常写即可
@ApiOperation(value = "导入模板下载", notes = "导入模板下载")
@ApiImplicitParam(name = "fileName", value = "文件名称", dataType = "string", paramType = "path")
@GetMapping("/getTemplateFile/{fileName}")
public void getTemplateFile(@PathVariable(value = "fileName") String fileName, HttpServletResponse response, HttpServletRequest request) throws IOException {
fileName = fileName + ".xlsx";
String path = "templateFile" + File.separator + fileName ;
byte[] data = FileUtil.readBytes(path);
response.reset();
String userAgent = request.getHeader("User-Agent");
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
fileName = URLEncoder.encode(fileName, "UTF-8");
} else {
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=%s", fileName));
response.addHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(data.length));
response.setContentType("application/octet-stream; charset=UTF-8");
ServletOutputStream outputStream = response.getOutputStream();
IoUtil.write(outputStream, Boolean.TRUE, data);
}