主要流程
- 在配置文件中添加文件操作的配置,示例:
storage:
image:
#保存位置
save-path: D:\classdesign-photo\images\
#允许上传的类型
allow-type:
- jpg
- png
- 编写文件操作配置类,示例:
/**
* 图片操作配置类
*/
@Configuration
//用于自动获取配置文件中storage.image中的字段
@ConfigurationProperties("storage.image")
@Data
public class ImageConfig {
private String savePath;
private List<String> allowType;
}
- 编写接受文件上传的Controller方法,并带上参数
MultipartFile file
,如:
public T upload(MultipartFile file) throws IOException {
...}
- 计算文件的字节数组的MD5的值,查找数据库中是否有重复的MD5值,防止重复上传相同文件(可以使用Hutool计算MD5),后面有具体实现
- 保存文件到对应文件夹,并往数据库中添加一条记录,数据库只存储文件的路径、MD5值、上传用户等信息
编写接受文件上传的Controller
在SpringBoot接受文件比较简单,只需要在Controller方法上加上参数MultipartFile file
即可获取前端上传的文件
@PostMapping("/upload")
public Response<FileHandlerResult> upload(MultipartFile image) throws IOException {
//自定义的通用回复类
Response<FileHandlerResult> res = new Response<>();
//自定义文件保存结果通用类
FileHandlerResult saveRes = fileManager.saveImage(image);
if(saveRes.getCode()==-1){
//保存失败
res.fail(saveRes