上传图片
以此方法来确定上传的文件夹地址。
/**
* 文件上传配置类,结合properties配置
* 最大单个文件上传10MB
* 总数据最大100MB
* */
@Configuration
public class FileUploadConfig {
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个数据大小
factory.setMaxFileSize(DataSize.parse("102400KB")); // KB,MB
// 总上传数据大小
factory.setMaxRequestSize(DataSize.parse("1024000KB"));
return factory.createMultipartConfig();
}
}
此类来配置,上传的文件最大为多少。
@Configuration
public class FileConfig extends WebMvcConfigurerAdapter {
@Value("${imagesPath}")
private String mImagesPath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (mImagesPath.equals("") || mImagesPath.equals("${imagesPath}")) {
String imagesPath = FileConfig.class.getClassLoader().getResource("").getPath();
if (imagesPath.indexOf(".jar") > 0) {
imagesPath = imagesPath.substring(0, imagesPath.indexOf(".jar"));
} else if (imagesPath.indexOf("classes") > 0) {
imagesPath = "file:" + imagesPath.substring(0, imagesPath.indexOf("classes"));
}
imagesPath = imagesPath.substring(0, imagesPath.lastIndexOf("/")) + "/picture/";
mImagesPath = imagesPath;
}
registry.addResourceHandler("/api/upload/**").addResourceLocations(mImagesPath);
super.addResourceHandlers(registry);
}
}
这段代码主要是实现 Spring Boot 中静态资源的映射,将指定路径下的图片资源映射到指定 URL 地址上。
在这个方法中,"/api/upload/**"
表示 URL 路径,mImagesPath
表示图片资源路径。具体的处理逻辑为:
- 如果
mImagesPath
为空或等于${imagesPath}
,则获取当前类加载器所在路径下的图片资源路径。 - 根据当前类加载器所在路径是否处于 jar 包中或处于 classes 目录下,对图片资源路径进行调整。
- 将得到的图片资源路径与
"/picture/"
拼接作为最终的图片资源路径,并将其注册到"/api/upload/**"
的资源处理器上。
@Value("${imagesPath}")
private String mImagesPath;
这部分取得是配置文件中的值