問題
2MB程度のファイルをアップロードしようとしたところ、org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field uploadFile exceeds its maximum permitted size of 1048576 bytes.
というエラーが出ました。
解決方法
application.properties
を設定する方法と、MultipartConfig
をJava
から設定する方法の2つを試しました。
@MultipartConfig
を用いる方法は上手く出来なかったのでここでは扱いません。
調査はSpringBoot2.0.5で行いました。
application.propertiesを設定する
ドキュメントより、以下を設定すればできます。
spring.servlet.multipart.max-file-size=1MB # Max file size. Values can use the suffixes "MB" or "KB" to indicate megabytes or kilobytes, respectively.
spring.servlet.multipart.max-request-size=10MB # Max request size. Values can use the suffixes "MB" or "KB" to indicate megabytes or kilobytes, respectively.
補足
multipart
プロパティは、以前は別のプロパティ配下だったようですが、2.0.0からservlet
配下に移り、2.1.0でもservlet
配下にあるようです。
MultipartConfigをJavaから設定する
@tera78 様の記事より、MultiPartConfigure.java
がそのまま利用できました。
MultiPartConfigure.java(引用)import javax.servlet.MultipartConfigElement; import org.springframework.boot.context.embedded.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MultiPartConfigure { @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); factory.setMaxFileSize("100MB"); factory.setMaxRequestSize("100MB"); return factory.createMultipartConfig(); } }
効率的な調べ方
紹介したドキュメントのページはバージョンを変えればそのバージョンのドキュメントが見られるので、それを辿ると効率的に調べられるかなと思います。