如果你上传报:
The field file exceeds its maximum permitted size of 1048576 bytes.
或者报
Required request part 'filedata' is not present
上面的报错是因为spring boot 内置的MultipartResolver大小默认设置不够,可以这样解决:
显性注册MultipartResolver:
[java] view plain copy
- // 显示声明CommonsMultipartResolver为mutipartResolver
- @Bean(name = "multipartResolver")
- public MultipartResolver multipartResolver()
- {
- CommonsMultipartResolver resolver = new CommonsMultipartResolver();
- // resolver.setDefaultEncoding("UTF-8");
- // resolver.setResolveLazily(true);// resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
- // resolver.setMaxInMemorySize(40960);
- resolver.setMaxUploadSize(10 * 1024 * 1024);// 上传文件大小 5M 5*1024*1024
- return resolver;
- }
并且在spring boot的启动类添加注解:
[java] view plain copy
- @EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
这个注解的意思是排除内置的MultipartResolver。如果没有这个注解,显性注册的MultipartResolver会无效。这样处理以后就能正常上传了
或者在application.properties配置文件中添加:
#默认支持文件上传.
spring.http.multipart.enabled=true
#支持文件写入磁盘.
#multipart.file-size-threshold=2048
# 上传文件的临时目录
#spring.http.multipart.location=
#指定文件大小最大值,默认1MB,设置50M
spring.http.multipart.maxFileSize=104857600
# 指定每次请求的最大值,默认为10MB 设置100M
spring.http.multipart.maxRequestSize=209715200
#spring boot 项目中,增加如下配置指定tomcat的基目录,
#否则spring boot内嵌的tomcat容器会创建一个临时目录,
#但是此目录有一个定期清除策略,会影响web容器资源的使用
server.tomcat.basedir=./deployer/tomcat