2019年2月28日木曜日

SpringBoot 1.3 から 1.5 へのバージョンアップでハマったこと その2


オフィス狛 技術部のJoeです。
今回が初の投稿になります。どうぞよろしくお願いします。

以前、SpringBoot1.31から1.51にバージョンアップを記事にしましたが、その影響がさらに出てきました。
今回は、バージョンアップが原因で発生した事象を追加でご紹介します。

今回の事象が発生したのはファイルのアップロードです。 数MB程度のファイルをmultipart/form-data形式でアップロードしたところ、下記のエラーが出ました。

org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field [xxxxx] exceeds its maximum permitted size of 1048576 bytes.

「最大サイズの1MBを超えています」だそうです。
エラーに出ているファイルサイズ(1MB)はSpringbootのデフォルトのサイズです。

最大サイズはapplication.ymlに定義しているはずなので確認しました。

multipart:
    maxFileSize: 100MB
    maxRequestSize: 100MB

確かに最大100MBと定義しています。
では、何故1MBになってしまうのか・・・・・・
調べてみたところ、バージョンアップによりプロパティーのキー名が変更されていました。

【SpringBoot 1.5】での指定方法
spring:
    http:
        multipart:
            max-file-size: 100MB
            max-request-size: 100MB

デフォルトでは、上記の設定はapplication.ymlには存在しないので、デフォルトのサイズ(1MB)になっていたのですね。
とりあえず、上記のキー名に修正し、無事にアップロードすることができました。

ちなみに、今回のアップロードは1ファイルなので同じ値を設定していますが、
複数ファイルの場合、「max-request-size」はファイル数に応じて変更です。
・max-file-size :1ファイルの最大バイト数
・max-request-size:1リクエストで複数ファイルの最大バイト数

さらに調べてみると、SpringBoot 2.0では、下記の設定方法に変更されていました。

【SpringBoot 2.0】での指定方法
spring:
    servlet:
        multipart:
            max-file-size: 100MB
            max-request-size: 100MB

今回ご紹介した以外にも、バージョンアップでキー名が変更されているものがあるようなので、対応の際は調査が必要ですね。


,

0 件のコメント:

コメントを投稿