一只倔强的笨猪

【Spring Boot】文件的上传

1.编写一个上传用到的类。

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里面会发现页面刷新看不到文件,需要刷新一下文件夹,我们用下面的映射类映射一下文件就好。

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.配置上传文件的大小限制。

#配置文件传输
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.调用案例。

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注