問題
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();
}
}
効率的な調べ方
紹介したドキュメントのページはバージョンを変えればそのバージョンのドキュメントが見られるので、それを辿ると効率的に調べられるかなと思います。