记一次在公司工作中踩得坑,项目使用的是Spring Boot(2.1.3RELEASE) + Spring Cloud,所以很自然我们必须考虑文件上传时,文件大小设置的问题,所以配置方法网上有很多,常见的为两种,一种通过在配置文件(我的是application.yml),另外一种就是在启动类上添加配置,废话不多说直接上配置:
第一种配置方法(application.yml)
SpringBoot2.0.x版本的配置方法:
servlet:
multipart:
enabled: true
max-file-size: 30MB
max-request-size: 30MB
SpingBoot1.5.x版本的配置方法:
spring:
http:
multipart:
max-file-size: 10MB
max-request-size: 10MB
enabled: true
可以前往Springboot官网进行查询学习。
第二种配置方法(@Configuration)
在application启动类上加上配置
/**
* 文件上传配置
*
* @return
*/
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个数据大小
factory.setMaxFileSize("30MB"); // KB,MB
/// 总上传数据大小
factory.setMaxRequestSize("30MB");
return factory.createMultipartConfig();
}
最容易忽略的坑
如果通过上面的配置完成之后,还是报错 Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
是不是感觉很纳闷,配置大小文件信息我们已经有了呀,为什么还是不行呢?
这个时候我们就要想一下了,若是有网关之类的中转,需在网关中也加入如上配置 ,而我遇到的坑就是忘记了给网关zuul同时配置上上面的配置信息。惨痛疏忽