目次
1. コンソール例外
2. ファイルをアップロードするためのデフォルトのパラメーター
ホームページ Java &#&チュートリアル SpringBoot でのアップロード ファイル サイズの制限の問題を解決する方法

SpringBoot でのアップロード ファイル サイズの制限の問題を解決する方法

May 16, 2023 pm 02:22 PM
springboot

1. コンソール例外

1

2

3

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 万を超えます。明らかにこれでは日々のニーズを満たすことができないため、デフォルトの構成パラメーターのサイズを変更する必要があります。

2. ファイルをアップロードするためのデフォルトのパラメーター

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

  • spring.servlet.multipart.maxFileSize

  • spring.servlet.multipart .maxRequestSize

3. 解決策

3.1. 方法 1 (設定ファイル .yml または .properties でパラメータを直接変更する)

例: I

SpringBoot 2.1.3 のバージョンが使用され、パラメータ サイズが設定ファイルに直接設定されます:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#做限制的参数配置

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 構成センター サービスを使用します:

SpringBoot でのアップロード ファイル サイズの制限の問題を解決する方法

Custom

MultipartFileConfig構成クラス:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Springboot が Jasypt を統合して構成ファイルの暗号化を実装する方法 Springboot が Jasypt を統合して構成ファイルの暗号化を実装する方法 Jun 01, 2023 am 08:55 AM

Springboot が Jasypt を統合して構成ファイルの暗号化を実装する方法

SpringBoot が Redisson を統合して遅延キューを実装する方法 SpringBoot が Redisson を統合して遅延キューを実装する方法 May 30, 2023 pm 02:40 PM

SpringBoot が Redisson を統合して遅延キューを実装する方法

Redis を使用して SpringBoot に分散ロックを実装する方法 Redis を使用して SpringBoot に分散ロックを実装する方法 Jun 03, 2023 am 08:16 AM

Redis を使用して SpringBoot に分散ロックを実装する方法

Springbootがjarパッケージにファイルを読み込んだ後にファイルにアクセスできない問題を解決する方法 Springbootがjarパッケージにファイルを読み込んだ後にファイルにアクセスできない問題を解決する方法 Jun 03, 2023 pm 04:38 PM

Springbootがjarパッケージにファイルを読み込んだ後にファイルにアクセスできない問題を解決する方法

SpringBootとSpringMVCの比較と差異分析 SpringBootとSpringMVCの比較と差異分析 Dec 29, 2023 am 11:02 AM

SpringBootとSpringMVCの比較と差異分析

SpringBoot が Redis をカスタマイズしてキャッシュのシリアル化を実装する方法 SpringBoot が Redis をカスタマイズしてキャッシュのシリアル化を実装する方法 Jun 03, 2023 am 11:32 AM

SpringBoot が Redis をカスタマイズしてキャッシュのシリアル化を実装する方法

Springbootでapplication.ymlの値を取得する方法 Springbootでapplication.ymlの値を取得する方法 Jun 03, 2023 pm 06:43 PM

Springbootでapplication.ymlの値を取得する方法

SQL ステートメントを使用せずに Springboot+Mybatis-plus を実装して複数のテーブルを追加する方法 SQL ステートメントを使用せずに Springboot+Mybatis-plus を実装して複数のテーブルを追加する方法 Jun 02, 2023 am 11:07 AM

SQL ステートメントを使用せずに Springboot+Mybatis-plus を実装して複数のテーブルを追加する方法

See all articles