问题描述
- 在做一个文件上传功能的时候,我获取到类路径:
String classPath = ClassUtils.getDefaultClassLoader().getResource("").getPath();
- 此方法获取到的路径是:
/target/classes
- 我将文件存储到
/target/classes/template/
中
此时发现只要一上传文件,项目就进行自动重启,问了一些大佬,还以为是框架中有什么安全检查呢
后来我发现是热部署的问题
代码如下:
@PostMapping("/uploadFile")
@ApiOperation("上传")
public ResultBody uploadFile(@RequestParam("file") MultipartFile file,
@RequestParam String id) throws IOException {
String classPath = ClassUtils.getDefaultClassLoader().getResource("").getPath();
//ApplicationHome h = new ApplicationHome(getClass());
//String classPath = h.getSource().getParentFile().getAbsolutePath();
String filePath = classPath + "/template/" + file.getOriginalFilename();
File dest = new File(filePath);
if (!dest.getParentFile().exists())
dest.getParentFile().mkdirs();
MonthlyImportDemand demand = monthlyImportDemandService.getById(id);
demand.setFilePath(dest.getAbsolutePath());
monthlyImportDemandService.updateById(demand);
FileUtil.writeBytes(file.getBytes(), dest);
return ResultBody.success();
}
获取绝对路径可以使用两种方法:
String classPath = ClassUtils.getDefaultClassLoader().getResource("").getPath();
ApplicationHome h = new ApplicationHome(getClass());
File file = h.getSource()
我将上传的文件保存至target/template
中,问题解决