项目1总结其三(图片上传功能) - 教程

1、UploadService

public interface UploadService {
//上传图片
String uploadImage(MultipartFile file, String type);
}

upload.location = D:/upload

@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这个链接 — 后端通过资源定位,将该链接定位到存放资源的位置

posted @ 2025-08-24 14:20  wzzkaifa  阅读(22)  评论(0)    收藏  举报