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"));
评论