本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
在刚才的那篇文章中,后台有人留言说,文件太大无法上传。哎,我刚写好的文章,还没好好欣赏呢?于是呢就有了本文,我们一起来搞定上传文件过大问题。
上传文件限制这个功能,大部分框架都有。WebFlux 这个框架也不例外。由于我们用的是 SpringBoot 2.0 以上的版本,所以像你之前一样的方法来配置上传大小的限制是不可取的。那该如何配置呢?
还是和以前一样,我们去找 autoconfigure 包。因为 SpringBoot 的核心就是自动配置,自动配置的所有东西都在 autoconfigure 中。然后我们找到这个类 MultipartProperties.java。它里面有下面的这几段代码:
@ConfigurationProperties( prefix = "spring.servlet.multipart", ignoreUnknownFields = false ) public class MultipartProperties { private boolean enabled = true; private String location; private String maxFileSize = "1MB"; private String maxRequestSize = "10MB"; private String fileSizeThreshold = "0"; private boolean resolveLazily = false;
默认的最大文件上传是 1MB。如果超过 1M 呢,就会报:“The field file exceeds its maximum permitted size of 1048576 bytes.“导致文件无法上传。
所以呢,我们在 application.properties 文件中配置一下内容即可。
spring.servlet.multipart.enabled=true spring.servlet.multipart.max-file-size=5MB spring.servlet.multipart.max-request-size=5MB
现在你会发现,配置属性的前缀变成了 spring.servlet.multipart.xx 。所以你如果还在按照 SpringBoot 1.x 的方式来配置,肯定不会生效的。
在 Spring Boot 1.3.x或者之前,配置用法如下:
multipart.maxFileSize=100Mb multipart.maxRequestSize=1000Mb
Spring Boot 1.4.x 以后,变成了下面的配置:
spring.http.multipart.maxFileSize=100Mb spring.http.multipart.maxRequestSize=1000Mb
在 Spring Boot 2.0 之后呢?它又变了。变成了上面我最开始的配置。
到这里,我们发现 Spring Boot 非常的善变,那是不是以后 SpringBoot 没升级一次,都会变呢?
答案是,不管它变与不变,只要我们掌握诀窍,再变我们都不怕。注意:一切自动配置都在 autoconfigure 包中,只需要找对应的 XXXProperties 类即可。
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » Spring Boot WebFlux 修改最大上传文件限制