Springboot实现文件上传,并防止同文件重复上传

该博客详细介绍了如何在Springboot应用中实现文件上传功能,并通过计算MD5值防止重复上传。主要步骤包括配置文件操作、编写Controller、文件操作结果类以及使用MD5值检查数据库中的重复文件。此外,还讨论了文件类型判断的安全性和文件目录创建的最佳实践。
摘要由CSDN通过智能技术生成

主要流程

  1. 在配置文件中添加文件操作的配置,示例:
storage:
  image:
  	#保存位置
    save-path: D:\classdesign-photo\images\
    #允许上传的类型
    allow-type:
      - jpg
      - png
  1. 编写文件操作配置类,示例:
/**
 * 图片操作配置类
 */
@Configuration
//用于自动获取配置文件中storage.image中的字段
@ConfigurationProperties("storage.image")
@Data
public class ImageConfig {
   
    private String savePath;
    private List<String> allowType;
}

  1. 编写接受文件上传的Controller方法,并带上参数MultipartFile file,如:
public T upload(MultipartFile file) throws IOException {
   ...}
  1. 计算文件的字节数组的MD5的值,查找数据库中是否有重复的MD5值,防止重复上传相同文件(可以使用Hutool计算MD5),后面有具体实现
  2. 保存文件到对应文件夹,并往数据库中添加一条记录,数据库只存储文件的路径、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
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值