Computer

Spring Bootでアップロードするファイルサイズの上限を変更する方法

2020年3月7日

症状

Spring BootでファイルをアップロードしたらMaxUploadSizeExceededExceptionという例外がスローされ、リクエストが処理されない。

ログには以下のようなエラーがログされる。

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (10541830) exceeds the configured maximum (10485760)]

原因

Spring Bootでは、デフォルトでファイルサイズの上限が1MB(1024*1024=1048576bytes)となっています。

アップロードしたファイルのサイズがこれより大きい場合、MaxUploadSizeExceededExceptionがスローされ、リクエストは処理されません。

対処方法

設定ファイルに以下の項目を設定します。

Spring Boot 2

application.yml

spring:
  servlet:
    multipart:
      max-file-size: 30MB
      max-request-size: 30MB

propertiesファイルの場合

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

Spring Boot 1.5

Spring Boot 1.5ではプロパティの名前が微妙に違っていて、servlet の部分がhttp となります。

application.yml

spring:
  http:
    multipart:
      max-file-size: 30MB
      max-request-size: 30MB

propertiesファイルの場合

spring.http.multipart.max-file-size=30MB
spring.http.multipart.max-request-size=30MB

-Computer

Copyright© dawaan , 2020 All Rights Reserved.