文件上传中关于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()); }