1.编写一个上传类

Upload.java

import java.io.File;
import java.io.IOException;
import java.net.URLDecoder;

import org.springframework.web.multipart.MultipartFile;

public class Upload {
    /*
     * file:上传的文件
     * filePath:上传的路径
     * fileName:文件的名称
     */
    public static String upload(MultipartFile file, String filePath, String fileName) {
        if(file.isEmpty()){
            return null;
        }
        try {
// 获取文件名
            String fileNameNew = file.getOriginalFilename();
// 获取文件的后缀名
            String suffixName=fileNameNew.substring(fileNameNew.lastIndexOf("."));
            fileNameNew = fileName + suffixName;
// 上传后的文件路径名全称
            File dest = new File(URLDecoder.decode(filePath + fileNameNew,"UTF-8"));
// 检测是否存在目录
            if(!dest.getParentFile().exists()){
                dest.getParentFile().mkdirs();
            }
            file.transferTo(dest);
            return fileNameNew;
        } catch (IllegalStateException | IOException e) {
// TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
}

2.映射配置类

用上这个类从前台拿到文件给到上面的类处理就行,返回的值是文件的名字全称(包括文件类型)然后存入数据库就行。
但是我们会发现如果我们把文件上传到项目的static里面会发现页面刷新看不到文件,需要刷新一下文件夹,我们用下面的映射类映射一下文件就好:

PicConfig.java

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class PicConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//前面的那个是映射后的前台引用的路径,后面那个是映射的本地路径。
        registry.addResourceHandler("/imgs/user/**").addResourceLocations("file:C:/APP/java/spring boot/eclipse-workspace/liuliu/src/main/resources/static/imgs/user/");
    }
}

3.配置上传文件的大小限制

application.properties

#配置文件传输
spring.servlet.multipart.enabled =true
spring.servlet.multipart.file-size-threshold =0
#单个文件的最大上限
spring.servlet.multipart.max-file-size = 10MB
#单个请求的文件总大小上限
spring.servlet.multipart.max-request-size=100MB

4.调用案例

demo.java

//prostoreFile为上传的文件,benzhu为重命名的名字
String productStoreLicense = Upload.upload(prostoreFile, "C:\\APP\\java\\spring boot\\eclipse-workspace\\liuliu\\src\\main\\resources\\static\\imgs\\user\\", "benzhu"));