springboot文件上传配置
前言
小兄弟在做文件上传时,发现文件超过1M报错了。没加配置!
于是赶紧加上文件上传的配置,配置成下面
servlet:
multipart:
enabled: true
max-request-size: 50MB
max-file-size: 50MB
文件小于50M的时候,文件上传ok. 满心欢喜的下班走人。
问题
在某天文件上传刚刚好50M大小的文件时暴雷了,提示如下
the request was rejected because its size (52429346) exceeds the configured maximum (52428800)
分析
max-file-size 指定上传文件允许的最大大小。 默认值为1MB
max-request-size 指定multipart/form-data请求允许的最大大小。 默认值为10MB。
文件确实为50M,没有超过限制,怎么还提示报错呢?
提示请求大小超过限制,一看报错的上传请求中包含了一些业务参数,不仅仅是文件。
于是看了一眼现有配置,发现问题。文件大小50M+业务参数,大于了max-request-size
配置的大小,导致报错。
当2个配置大小一样时,就出现问题了。
原来是想着最大支持50M的文件上传,但是极有可能有些上传请求会附加额外的业务参数,这样就容易导致请求大小超过了设置的大小。
小兄弟图省事,一顿复制。没有细看配置的含义,导致问题。
修改
max-request-size 配置大小时要比max-file-size大,多出来的空间就可以传递参数。
spring:
servlet:
multipart:
max-file-size: 50MB #上传文件大小上限50MB
max-request-size: 55MB
上传文件大小限制为50M,单次请求限制大小为55M。
这下OK了。文件大小还是限制为50M,预留了5M的额外业务参数空间。