1、UploadService
java
public interface UploadService {
//上传图片
String uploadImage(MultipartFile file, String type);
}
upload.location = D:/upload
java
@Value("${upload.location}")
private String uploadLocation;//文件上传路径
@Override
public String uploadImage(MultipartFile file, String type) {
//1.创建目录
File dir = new File(uploadLocation + "/images/" + type);
if (!dir.exists()) {
boolean b = dir.mkdirs();//级联创建目录
if (!b) {
throw new F1Exception("级联创建目录异常");
}
}
//2.给上传的文件起名
LocalDateTime now = LocalDateTime.now();
String fileName = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
Random random = new Random();
int sid = random.nextInt(1000);//0~999
fileName = fileName + "-" + sid;
//3.拼扩展名
String originalFileName = file.getOriginalFilename();//上传文件名
//assert originalFileName != null;
int idx = originalFileName.lastIndexOf(".");
String ext = originalFileName.substring(idx);
fileName = fileName + ext;
//完整的文件名
String fullName = dir.getAbsolutePath() + "/" + fileName;
//要存储的目标文件
File target = new File(fullName);
//4.存储文件
try {
file.transferTo(target);
} catch (IOException e) {
throw new RuntimeException("保存文件失败");
}
//5.返回访问地址和存储地址
return "/images/" + type + "/" + fileName;
}
修正:图片中的回显操作并非通过interceptor,而是通过资源定位实现的

后记:这里的D:/upload完全可以用@Value注入
思路就是:
通过组件的action操作---后端api调用service操作---保存文件---前端回显访问baseUrl + /image/xxx这个链接 --- 后端通过资源定位,将该链接定位到存放资源的位置