org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes. at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:121) at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:114)
上記の例外からわかるように、アップロードされたファイルが Spring のデフォルト設定の最大値 1048576 バイトを超えていることが原因です。通常、MultipartFile インターフェイス クラスを使用して、フロントエンドによってアップロードされたファイルを受信するとき、MultipartFile ファイルのデフォルトの制限も 1048576 バイト、つまり 1M であることがわかります。
しかし、多くの場合、携帯電話で直接撮影した証明写真やドキュメントは基本的に 200 万を超えます。明らかにこれでは日々のニーズを満たすことができないため、デフォルトの構成パラメーターのサイズを変更する必要があります。
SpringBoot のバージョンが異なると、対応する設定パラメーターも異なります:
Spring Boot 1.3.x 以前
multipart.maxFileSize
multipart.maxRequestSize
Spring Boot 1.4.x および 1.5 .x
spring.http.multipart.maxFileSize
spring.http.multipart.maxRequestSize
Spring Boot 2.xxx
SpringBoot 2.1.3 のバージョンが使用され、パラメータ サイズが設定ファイルに直接設定されます:
#做限制的参数配置 spring: servlet: multipart: enabled: true #默认支持文件上传 max-file-size: 20MB # 最大支持文件大小 max-request-size: 30MB # 最大支持请求大小 #不做限制的参数配置 spring: servlet: multipart: enabled: true #默认支持文件上传 max-file-size: -1 #不做限制 max-request-size: -1 #不做限制設定後、プロジェクトを再起動すると、ファイルが正常にアップロードされます。 。 3.2. 方法 2 (カスタム構成設定クラス) リモート設定ファイル センターでパラメータを設定します。設定プロジェクトの設定ファイルにある場合は、方法と同じです。 1. 個別の構成クラスを作成する必要はなくなり、パラメータはリモート構成センターで構成されるため、プロジェクトを再起動せずに一時的なニーズに応じてパラメータを動的に変更できます。 一般的なリモート構成ファイル センター サービスには、Nacos、Apollo (Apollo)、SpringCloud などが含まれます。私は Nacos 構成センター サービスを使用します: Custom
MultipartFileConfig構成クラス:
import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.unit.DataSize; import javax.servlet.MultipartConfigElement; /** * @author: 一宿君 * @date: 2022-03-23 19:18:51 * @description: */ @Configuration public class MultipartFileConfig { @Value("${config.multifile.maxFileSize}") private Long maxFileSize; @Value("${config.multifile.maxRequestSize}") private Long maxRequestSize; @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); /** * 单个数据大小, * DataSize.ofMegabytes(maxFileSize)默认是配置字节,将字节转化为MB */ factory.setMaxFileSize(DataSize.ofMegabytes(maxFileSize)); // 总上传数据大小 factory.setMaxRequestSize(DataSize.ofMegabytes(maxRequestSize)); return factory.createMultipartConfig(); } }したがって、アップロードされるファイルのサイズをいつでも制御できます。
以上がSpringBoot でのアップロード ファイル サイズの制限の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。