SpringBoot用MultipartFile.transferTo传递相对路径的问题
起因:
工作中简单的图片不需要使用第三方文件存储服务,上传到项目所在路径保存,在使用 MultipartFile.transferTo 转存文件时报错,路径找不到。
原因:
当MultipartFile的transferTo的入参是相对路径时,会自动拼接成一个绝对路径,但这个绝对路径并不是真实存在的,所以转存时会报错,而如果传递的时绝对路径,就不会有问题。但是我非要传相对路径,解决办法如下。
解决:
File dir = new File("目录相对路径");
if (!dir.exists()) {
dir.mkdirs(); // 创建目录
}
try {
String realPath = dir.getCanonicalPath(); // 获取真实路径
file.transferTo(new File(realPath + "/" + fileName)); // 转存
} catch (IOException e) {
System.err.println(e);
throw new BadRequestException("上传失败");
}