文件上传中关于MultipartResolver的配置
MultipartResolver配置
1.setMaxUploadSize 用于配置上传的文件的最大大小,例如:当设置值为5M时,则上传的文件均不可以超过5M, 即使一次性上传10个文件,则10个文件的大小总和不允许超过5M;
2.setMaxUploadSizePerFile 用于配置上传的每个文件的最大大,例如:当设置值为5M时,如果一次性上传10个文件,则每个文件都不允许 超过5M,但是总大小可以接近50M;
3.setDefaultEncoding 用于配置默认编码,上传的文件本身是不考虑编码问题的,只要文件的内容(表示文件内容信息含义的二进制序列 )是正确的就可以了!由于上传过程中,会通过‘CommonsMultipartResolver’去组织上传时表单中的数据, 表单中可能包括例如输入框等控件,则同一个表单中还可能提交例如用户名等文本信息,这些信息都需要 使用正确的编码来进行传递!
代码:
/**
* @author: 李自强
* @description: MultipartResolverConfig
* @date: 2021/6/22 3:19 下午
*/
@Configuration
public class MultipartResolverConfig {
@Bean(name = "multipartResolver")
public CommonsMultipartResolver getCommonsMultipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(2097152);//314572800
multipartResolver.setMaxUploadSizePerFile(2097152);//104857600
multipartResolver.setMaxInMemorySize(2048);
return multipartResolver;
}
}
MultipartFile相关API
boolean isEmpty 该方法用于判断上传的文件是否为空,当用户没有选择需要上传的文件或选中的文件时空文件(0字节) 时,该方法返回"true",可用于验证
long getSize(); 该方法用于获取文件的大小,以字节为单位,通常,用于限制上传文件的大小。
String getContentType() 该方法用于获取文件的MIME类型,通常,用于限制上传的文件的类型。
关于各种文件扩展名对应的MIME类型,可以上网查询,也可以在Tomcat目录中的"conf/web.xml"文件中查找。 MIME的值,完全取决于文件的扩展名,如果文件的扩展名被修改,MIME也可能发生变化。
String getOriginalFilename() 获取文件的原名,即该文件在客户端的文件全名,典型的用途就是获取文件的扩展名。
void transferTo(File dest) 执行保存所上传的文件。
InputStream getInputStream() 获取输入字节流,用于自定义接收所上传的文件。 注意:该方法与以上"transferTo"不可以同时使用,对于每个请求,只能选取其中1个方法来获取数据并保存文件。
public CustomRestResult<Object> updateAvatar(MultipartFile avatar, @CurrentUser JwtUser jwtUser) {
CommonsMultipartFile commonsMultipartFile = (CommonsMultipartFile) avatar;
DiskFileItem diskFileItem = (DiskFileItem) commonsMultipartFile.getFileItem();
File fileFinal = diskFileItem.getStoreLocation();
log.info(">>>{},{}",fileFinal.getName(),fileFinal.getPath());
}
