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("上传失败");
}