关于spring.http.multipart.max-file-size与spring.servlet.multipart.max-file-size

时间:2019-05-20 14:17:25

标签: spring-boot file-upload application.properties

我花了几天时间让Spring Boot Upload文件开始工作,但像Spring一样,您仍然不知道魔术的工作原理,即使在使用此框架多年后,您也不得不花费大量时间来解开什么出了问题并解决了类似迷宫般的问题,这是可维护性的噩梦。

使用Spring Boot 2.2.0.M3进行文件上传,两对设置之间有什么区别?哪个是对的?

spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1

Spring REST控制器方法使用的上述“ http”就是这样... @GetMapping(“ / files / {filename:。+}”) @ResponseBody 公共ModelAndView yourMethod(.....) 还是根本不需要它,它是一个完整的红色鲱鱼,并且它是下面的设置,可以对大于REST HTTP和Servlet请求默认值1MB的文件进行所有工作。 < / p>

spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.max-request-size=-1

上传异常

已超过最大上传大小;嵌套异常是java.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.FileUploadBase $ FileSizeLimitExceededException:字段文件超出了其最大允许大小1048576字节。

1 个答案:

答案 0 :(得分:1)

他们更改了属性名称的不同版本。

Spring Boot 1.3.x和更早版本

multipart.max-file-size
multipart.max-request-size

Spring Boot 1.3.x之后:

spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1

在Spring Boot 2.0之后:

spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.max-request-size=-1

  

最大文件大小与最大请求大小

spring.servlet.multipart.max-file-size = 2MB

上传支持的每个文件的最大大小为2MB;

还支持MB或KB后缀; 默认情况下为1MB


spring.servlet.multipart.max-request-size=10MB 

整个请求的最大大小为10MB;

还支持MB或KB后缀

对于无限制的上传文件大小,似乎设置-1将使其具有无限的文件大小。


更新: 您无需在控制器级别指定任何spring.** property(在某些情况下,可以期待标题Content-Type)。您可以在appilcation.properties文件中设置这些属性,如下所示。

# MULTIPART (MultipartProperties)
spring.servlet.multipart.enabled=true # Whether to enable support of multipart uploads.
spring.servlet.multipart.file-size-threshold=0B # Threshold after which files are written to disk.
spring.servlet.multipart.location= # Intermediate location of uploaded files.
spring.servlet.multipart.max-file-size=1MB # Max file size.
spring.servlet.multipart.max-request-size=10MB # Max request size.
spring.servlet.multipart.resolve-lazily=false # Whether to resolve the multipart request lazily at the time of file or parameter access.