目录
一.什么是MultipartFile
二.构造方法
下面举例一种, 可以点进入看源代码,有很多构造方法的.
MultipartFile multipartFile = new MockMultipartFile(fileName, inputStream);
二.常用方法
使用transferTo(File file)方法是:将上传文件转写到服务器(或电脑硬盘)上指定的文件中;
三.常用配置
## MULTIPART (MultipartProperties)
# 开启 multipart 上传功能
spring.servlet.multipart.enabled=true
# 文件写入磁盘的阈值
spring.servlet.multipart.file-size-threshold=2KB
# 最大文件大小
spring.servlet.multipart.max-file-size=200MB
# 最大请求大小
spring.servlet.multipart.max-request-size=215MB
# 文件存储所需参数
# 所有通过 REST API 上传的文件都将存储在此目录下
file.upload.path=D:/ideaProject/MusicWebSpringboot/image
#指定multipartFile临时文件存放路径,但是内置的tomcat创建的临时文件夹路径还是不变的
spring.servlet.multipart.location=临时文件路径
#指定springboot启动时内置tomcat创建的临时文件夹的路径
#server.tomcat.basedir=/data/ops/app/cms/cache
四.使用注意点
1.在上传文件慢,用异步上传时,会发现报java.io.FileNotFoundException: D:\System\Temp\tomcat.819...00.tmp (系统找不到指定的文件)异常.这是因为用异步的话在异步之前MultipartFile文件的流会自动关闭.
有两种解决办法,第一:种在异步之前把MultipartFile转换成临时文件,传临时文件
第二种:用MultipartFile.getInputStream(),传io流.
五.指定MultipartFile的临时文件储存路径
1.采用配置类
@Configuration
public class MultipartConfig {
/**
* 文件上传临时路径
*/
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
String location = "自定义临时文件路径";
File tmpFile = new File(location);
if (!tmpFile.exists()) {
tmpFile.mkdirs();
}
factory.setLocation(location);
return factory.createMultipartConfig();
}
}
2.可采用配置文件关于multipart的配置项来指定临时文件路径
#指定multipartFile临时文件存放路径,但是内置的tomcat创建的临时文件夹路径还是不变的
spring.servlet.multipart.location=临时文件路径
#指定springboot启动时内置tomcat创建的临时文件夹的路径
#server.tomcat.basedir=/data/ops/app/cms/cache
当采用配置项后,multipartFile的临时文件如下: