1. 程式人生 > >Spring Boot:The field file exceeds its maximum permitted size of 1048576 bytes.

Spring Boot:The field file exceeds its maximum permitted size of 1048576 bytes.

Spring Boot做檔案上傳時出現了The field file exceeds its maximum permitted size of 1048576 bytes.錯誤,顯示檔案的大小超出了允許的範圍。查看了官方文件,原來Spring Boot工程嵌入的tomcat限制了請求的檔案大小,這一點在Spring Boot的官方文件中有說明,原文如下

65.5 Handling Multipart File Uploads
Spring Boot embraces the Servlet 3 javax.servlet.http.Part API to support uploading files. By default Spring Boot configures Spring MVC with a maximum file of 1Mb per file and a maximum of 10Mb of file data in a single request. You may override these values, as well as the location to which intermediate data is stored (e.g., to the /tmp directory) and the threshold past which data is flushed to disk by using the properties exposed in the MultipartProperties class. If you want to specify that files be unlimited, for example, set the multipart.maxFileSize property to -1.The multipart support is helpful when you want to receive multipart encoded file data as a @RequestParam-annotated parameter of type MultipartFile in a Spring MVC controller handler method.

文件說明表示,每個檔案的配置最大為1Mb,單次請求的檔案的總數不能大於10Mb。要更改這個預設值需要在配置檔案(如application.properties)中加入兩個配置

    multipart.maxFileSize = 10Mb
    multipart.maxRequestSize=100Mb

multipart.maxFileSize=10Mb是設定單個檔案的大小, multipart.maxRequestSize=100Mb是設定單次請求的檔案的總大小

如果是想要不限制檔案上傳的大小,那麼就把兩個值都設定為-1就行啦

Spring Boot1.4版本後配置更改為:

  spring.http.multipart.maxFileSize = 10Mb  
  spring.http.multipart.maxRequestSize=100Mb  

Spring Boot2.0之後的版本配置修改為:

spring.servlet.multipart.max-file-size=30Mb
spring.servlet.multipart.max-request-size=30Mb