カテゴリ: SpringのWeb開発(Spring MVC) 更新日: 2026/03/03

Spring Bootで設定するファイルサイズ制限(max-file-size / max-request-size)|初心者向けに仕組みから丁寧に解説

Spring Bootで設定するファイルサイズ制限(max-file-size / max-request-size)
Spring Bootで設定するファイルサイズ制限(max-file-size / max-request-size)

新人と先輩の会話形式で理解しよう

新人

「Spring MVCでファイルアップロードを実装しているんですが、ファイルサイズ制限って設定しないといけないんですか?」

先輩

「設定しないと、想定外に大きなファイルが送られてきてしまいます。Spring Bootでは、ファイルサイズ制限を簡単に設定できる仕組みがありますよ。」

新人

「サイズ制限を超えたら、Controllerでエラー処理すればいいんですか?」

先輩

「実は、その前の段階でブロックされます。Spring Boot ファイルサイズ制限の考え方から順番に見ていきましょう。」

1. Spring Bootにおけるファイルサイズ制限とは何か

1. Spring Bootにおけるファイルサイズ制限とは何か
1. Spring Bootにおけるファイルサイズ制限とは何か

Spring Bootにおけるファイルサイズ制限とは、 ファイルアップロード時に送信できるデータ量をあらかじめ制限する仕組みのことです。 Webアプリケーションでは、フォームからファイルをアップロードできますが、 サイズに制限を設けないと、非常に大きなファイルが送られてくる可能性があります。

Spring MVCのファイルアップロードでは、 multipart形式のリクエストとしてファイルデータがサーバに送信されます。 Spring Bootは、このリクエストを受け取る前段階で、 ファイルサイズやリクエスト全体のサイズをチェックする仕組みを持っています。

初心者の方は、 「ControllerでMultipartFileを受け取ってからチェックすればいいのでは」 と考えがちですが、 実際にはControllerに処理が到達する前に制限が適用されます。 これがSpring Boot ファイルサイズ制限の大きな特徴です。

つまり、サイズ制限はアプリケーションの入口で働く安全装置のような存在です。 Spring Bootでは、この制限を設定ファイルで簡単に指定できるため、 実務では必ず設定される項目の一つとなっています。

2. なぜファイルアップロードにサイズ制限が必要なのか

2. なぜファイルアップロードにサイズ制限が必要なのか
2. なぜファイルアップロードにサイズ制限が必要なのか

ファイルアップロードにサイズ制限が必要な最大の理由は、 サーバの安全性と安定性を守るためです。 サイズ制限がない状態では、 極端に大きなファイルが何度も送信される可能性があります。

その結果、サーバのメモリやディスク容量が圧迫され、 他のユーザーが正常にサービスを利用できなくなる恐れがあります。 これは、意図的な攻撃でなくても、 ユーザーの操作ミスによって起きることがあります。

Spring Boot ファイルサイズ制限を設定しておくことで、 一定サイズを超えるリクエストは自動的に拒否されます。 そのため、Controllerの処理が実行される前に、 危険なリクエストを防ぐことができます。

新人と先輩の会話でよくあるのが、 「Controllerでif文を書けば十分では」 という考えです。 しかし、Controllerに到達する時点で、 すでに大きなデータはメモリに読み込まれています。 これでは本来の防御としては不十分です。

だからこそ、Spring Bootでは max-file-size や max-request-size という設定を使い、 アプリケーションの入り口で制限をかける設計になっています。

3. max-file-size と max-request-size の基本的な役割

3. max-file-size と max-request-size の基本的な役割
3. max-file-size と max-request-size の基本的な役割

Spring Bootのファイルサイズ制限で必ず登場するのが、 max-file-size と max-request-size という二つの設定です。 初心者の方は、この二つの違いで混乱しやすいポイントです。

max-file-size は、 一つのファイルに対して許可される最大サイズを指定します。 例えば、一つのファイルを十メガバイトまでに制限したい場合に使います。

一方で max-request-size は、 リクエスト全体のサイズを制限するための設定です。 複数のファイルやフォーム項目を同時に送信した場合、 それらをすべて合計したサイズが対象になります。

新人がよく勘違いするのは、 「ファイル一つだけなら max-file-size だけで十分では」 という点です。 実務では、ファイルと一緒に文字データが送信されることが多いため、 max-request-size も必ず設定する必要があります。


spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=20MB

このように設定すると、 一つのファイルは最大十メガバイトまで、 リクエスト全体では二十メガバイトまでに制限されます。 Spring Boot ファイルサイズ制限の基本として、 この二つは必ずセットで考えることが重要です。

まずは、 「ファイル単体の制限」と 「リクエスト全体の制限」 という役割の違いを理解することが、 max-file-size と max-request-size を正しく使う第一歩になります。


@Controller
public class UploadController {

    @PostMapping("/upload")
    public String upload(@RequestParam MultipartFile file) {
        return "result";
    }
}

このControllerのコード自体はシンプルですが、 実際にはSpring Bootの設定によって、 サイズ制限が事前にチェックされています。 そのため、Controllerでは 「受け取れる前提」で処理を書ける点も大きなメリットです。

4. max-file-sizeとは何か(制限される対象)

4. max-file-sizeとは何か(制限される対象)
4. max-file-sizeとは何か(制限される対象)

max-file-size とは、 Spring Bootで設定できるファイルサイズ制限のうち、 「一つのファイル」に対して適用される制限です。 Spring MVCのファイルアップロードでは、 MultipartFileとしてファイルを受け取りますが、 その一つ一つのファイルが対象になります。

例えば、 画像ファイルを一つだけアップロードする画面であっても、 max-file-size の設定値を超えていれば、 その時点でアップロードは失敗します。 この制限は、Controllerの処理が呼ばれる前に適用されます。

新人と先輩の会話でよくあるのが、 「Controllerに入ってからサイズを確認すればいいのでは」 という疑問です。 しかし、max-file-size は Spring MVCがMultipartFileを作成する段階よりも前でチェックされます。

図解イメージで考えると、 ブラウザから送信されたリクエストが サーバに届いた直後の入口で、 「このファイルは大きすぎないか」 を確認しているイメージです。 そのため、制限を超えた場合は、 Controllerのメソッド自体が実行されません。

Spring Boot max-file-size 設定は、 ファイル単体の大きさを確実に制御するための仕組みであり、 セキュリティやサーバ負荷対策として非常に重要な役割を持っています。

5. max-request-sizeとは何か(リクエスト全体との違い)

5. max-request-sizeとは何か(リクエスト全体との違い)
5. max-request-sizeとは何か(リクエスト全体との違い)

max-request-size は、 ファイルアップロード時の 「リクエスト全体」に対して適用されるサイズ制限です。 ここで言うリクエスト全体とは、 ファイルだけでなく、 一緒に送信されるフォーム項目なども含めた合計サイズを指します。

初心者の方は、 「ファイルは一つしか送らないから関係ない」 と感じることがありますが、 実際のWebアプリケーションでは、 ファイルと同時にテキストデータや隠し項目が送信されることが一般的です。

図解イメージで説明すると、 max-file-size は「箱の中の一つ一つの荷物の大きさ」を見ており、 max-request-size は「箱全体の重さ」を見ているようなものです。 どちらか一方だけでは、完全な制御にはなりません。

新人と先輩の会話で混乱しやすいポイントとして、 「max-file-sizeを超えていないのにエラーになる」 というケースがあります。 これは、複数ファイルや追加データの合計が、 max-request-size を超えている場合に起こります。

Spring Boot max-request-size 違いを正しく理解することで、 「なぜエラーになるのか分からない」 という状況を防ぐことができます。 実務では、この二つの制限をセットで調整するのが基本です。

6. application.propertiesでの基本的な設定方法

6. application.propertiesでの基本的な設定方法
6. application.propertiesでの基本的な設定方法

Spring Bootのファイルサイズ制限は、 application.properties に設定を記述することで有効になります。 pleiadesで作成したGradleプロジェクトでも、 この設定方法は同じです。

初心者の方が最初につまずきやすいのは、 「どこに書けばいいのか分からない」 という点です。 application.properties は、 src/main/resources 配下に配置されており、 Spring Boot起動時に自動で読み込まれます。


spring.servlet.multipart.max-file-size=5MB
spring.servlet.multipart.max-request-size=10MB

この設定では、 一つのファイルは最大五メガバイトまで、 リクエスト全体では最大十メガバイトまでに制限されます。 単位はKBやMBなどが使えるため、 数値だけを書く必要はありません。

新人と先輩の会話でよくあるのが、 「設定を書いたのに反映されない」 という相談です。 その多くは、サーバを再起動していないことが原因です。 application.properties の変更は、 Spring Bootの再起動後に反映されます。

Spring Boot max-file-size 設定は、 ControllerやJavaコードを書かずに制御できる点が大きな特徴です。 まずはこの基本設定を確実に押さえることが重要です。

7. 設定が反映される仕組みとSpring MVCとの関係

7. 設定が反映される仕組みとSpring MVCとの関係
7. 設定が反映される仕組みとSpring MVCとの関係

Spring Bootで設定したファイルサイズ制限は、 Spring MVCがリクエストを処理するよりも前の段階で適用されます。 そのため、Controllerのメソッド内で 「サイズ制限のif文」を書かなくても、 自動的に制御が行われます。

仕組みとしては、 Spring Bootが起動時に application.properties を読み込み、 multipartリクエストを処理するコンポーネントに 制限値を渡しています。 そのコンポーネントが、 リクエスト受信時にサイズチェックを行います。

新人が混乱しやすいのは、 「エラーがControllerでキャッチできない」 という点です。 サイズ制限を超えた場合、 Spring MVCのControllerに処理が渡らないため、 通常の処理フローとは異なります。


@Controller
public class UploadController {

    @PostMapping("/upload")
    public String upload(@RequestParam MultipartFile file) {
        return "result";
    }
}

このControllerは、 サイズ制限を超えない場合のみ呼び出されます。 つまり、 Spring Boot ファイルサイズ制限は、 Controllerの外側で動作する仕組みだと理解すると分かりやすいです。

この設計により、 開発者はController内の処理をシンプルに保つことができます。 Spring MVCとSpring Bootが連携して、 ファイルアップロードを安全に制御している点が、 実務で高く評価されている理由の一つです。

8. ファイルサイズ制限でよくある設定ミス

8. ファイルサイズ制限でよくある設定ミス
8. ファイルサイズ制限でよくある設定ミス

Spring Bootのファイルサイズ制限で、 初心者の方が最もつまずきやすいのが設定ミスです。 application.properties に正しく書いたつもりでも、 意図した通りに動かないケースは少なくありません。

よくあるミスの一つが、 max-file-size だけを設定して、 max-request-size を設定していないケースです。 この場合、ファイル自体は制限内であっても、 リクエスト全体のサイズが大きくなり、 想定外のエラーが発生することがあります。

新人と先輩の会話でありがちなのが、 「ファイルは一つしか送っていないのに失敗する」 という相談です。 実際には、フォームの他の入力項目も含めて リクエストサイズが計算されているため、 max-request-size に引っかかっていることがあります。

また、単位の指定ミスも多いポイントです。 MBと書くべきところを、 数値だけで指定してしまい、 想定よりも小さい制限になっているケースもあります。 Spring Boot ファイルサイズ制限 設定ミスは、 動作確認をしないと気づきにくい点が特徴です。

9. サイズ制限超過時に起きるエラーの原因

9. サイズ制限超過時に起きるエラーの原因
9. サイズ制限超過時に起きるエラーの原因

ファイルサイズ制限を超えた場合、 なぜエラーになるのか分からず、 混乱する初心者の方は多いです。 その原因は、 エラーがControllerの外側で発生している点にあります。

Spring Bootでは、 multipartリクエストを解析する段階で ファイルサイズとリクエストサイズをチェックします。 この段階で制限を超えていると、 Controllerに処理が渡る前にエラーとなります。

新人がよく疑問に思うのが、 「なぜControllerでログが出ないのか」 という点です。 これは、Controllerのメソッド自体が 一度も呼ばれていないためです。

Spring Boot ファイルアップロード エラーは、 アプリケーションの入口で発生するため、 通常の業務ロジックとは切り離して考える必要があります。 この仕組みを理解していないと、 「コードが間違っているのでは」 と誤解してしまいがちです。

10. 実務でよく使われるファイルサイズ制限の考え方

10. 実務でよく使われるファイルサイズ制限の考え方
10. 実務でよく使われるファイルサイズ制限の考え方

実務では、 ファイルサイズ制限を単純に大きく設定すればよい、 という考え方はあまり採用されません。 必要最小限のサイズに抑えることが重要です。

例えば、 プロフィール画像のアップロードであれば、 数メガバイトも必要ないケースがほとんどです。 逆に、資料アップロード機能などでは、 ある程度大きなサイズを許可する必要があります。

新人と先輩の会話でよくあるのが、 「とりあえず大きめにしておきます」 という判断です。 しかし、これはサーバ負荷やセキュリティの観点では あまり好ましくありません。

Spring Boot ファイルサイズ制限は、 機能ごとに適切な上限を考え、 アプリケーション全体として バランスを取ることが重要です。 実務では、 要件をもとにサイズ制限を設計する意識が求められます。


spring.servlet.multipart.max-file-size=2MB
spring.servlet.multipart.max-request-size=3MB

このように、 利用目的に応じて小さめの制限を設けることで、 サーバへの負担を抑えつつ、 安全なファイルアップロードを実現できます。

11. 初心者が混乱しやすいポイント整理

11. 初心者が混乱しやすいポイント整理
11. 初心者が混乱しやすいポイント整理

ここまでの内容を振り返ると、 初心者が混乱しやすいポイントはいくつかあります。 特に多いのは、 「Controllerに届かない理由が分からない」 という点です。

Spring MVCでは、 通常のリクエスト処理と ファイルアップロード処理で、 エラーが発生するタイミングが異なります。 ファイルサイズ制限は、 その違いを強く意識しないと理解しづらい仕組みです。

また、 max-file-size と max-request-size の役割を 混同してしまうことも多いです。 この二つは対象が異なるため、 どちらが原因でエラーになっているのかを 切り分けて考える必要があります。

Spring Boot ファイルサイズ制限を扱う際は、 「どこで制限がかかるのか」 「どの時点で処理が止まるのか」 を意識することで、 混乱を大きく減らすことができます。

12. ファイルサイズ制限を正しく設計するための考え方

12. ファイルサイズ制限を正しく設計するための考え方
12. ファイルサイズ制限を正しく設計するための考え方

ファイルサイズ制限を正しく設計するためには、 単なる設定項目として見るのではなく、 アプリケーション全体の安全性を支える仕組みとして 捉えることが大切です。

なぜサイズ制限が必要なのかを理解すると、 「なぜControllerに届かないのか」 「なぜエラーが先に発生するのか」 という疑問にも自然と答えが見えてきます。

新人と先輩の会話で最後によく出てくるのが、 「どこまで設定すれば十分ですか」 という質問です。 その答えは一つではなく、 アプリケーションの用途や利用者によって変わります。

Spring Boot ファイルサイズ制限は、 セキュリティ対策とサーバ負荷対策の両面を持つ重要な設定です。 基本の仕組みを理解したうえで、 実務に合った制限値を考えられるようになることが、 初心者から次のステップへ進むためのポイントになります。


@Controller
public class UploadController {

    @PostMapping("/upload")
    public String upload(@RequestParam MultipartFile file) {
        return "result";
    }
}

このように、 Controllerのコードはシンプルなままでも、 Spring Bootの設定によって ファイルアップロードは安全に制御されています。 仕組みを理解したうえで設定を行うことが、 安定したWebアプリケーション開発につながります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
SpringのWeb開発(Spring MVC)
Spring Bootで設定するファイルサイズ制限(max-file-size / max-request-size)|初心者向けに仕組みから丁寧に解説
New2
Thymeleaf
Thymeleafとjspの違いとは?初心者向けに比較解説
New3
Thymeleaf
ThymeleafでJavaScriptに配列を渡す方法を徹底解説!onclick引数での連携をマスターしよう
New4
SpringのWeb開発(Spring MVC)
Spring MVCアプリの基本動作フローを理解する|初心者向けに画面表示の流れをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
SpringのWeb開発(Spring MVC)
DispatcherServletの仕組みを理解する!初心者向け完全ガイド
No.2
Java&Spring記事人気No2
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.3
Java&Spring記事人気No3
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.4
Java&Spring記事人気No4
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.5
Java&Spring記事人気No5
SpringのAPI開発(REST & GraphQL)
REST APIの主要なHTTPメソッド(GET, POST, PUT, DELETE)を初心者向けにわかりやすく解説!
No.6
Java&Spring記事人気No6
SpringのWeb開発(Spring MVC)
Spring Bootでの@GetMappingと@PostMappingの基本を完全解説!初心者でも理解できる使い方
No.7
Java&Spring記事人気No7
SpringのAPI開発(REST & GraphQL)
SpringでAPIリクエストをバリデーションしよう!初心者向け@Validの使い方解説
No.8
Java&Spring記事人気No8
Thymeleaf
Thymeleaf if elseの書き方と条件分岐の活用法!初心者でもわかる使いこなしガイド