文件上传中关于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());
}
经验分享 程序员 微信小程序 职场和发展