1. ホーム
  2. Server

413 ファイルのアップロード時に Request Entity Too Large 問題が発生する。

2022-02-13 13:56:46
<パス

  SpringBootプロジェクトは、ファイルをアップロードする必要があり、突然、ファイルが1MBより大きい場合、インタフェースが完全にアクセスできない、Fiddlerを開き、インタフェースが直接赤を報告し、インタフェースへのアクセスが全くないことを示す。
  では、この問題の原因は何でしょうか?

解決方法は以下の通りです。
nginx.conf を開き(ops にはアクセス不可)、http{ }: client_max_body_size 50m に設定します。

client_max_body_size 50M


Nginxを再起動するだけです。それでもダメな場合は、ゲートウェイ(zuul)がファイルのアップロードを制限していないか確認してください。

## Turn on customization to configure
spring.http.multipart.enabled=true
##Maximum single file limit
spring.http.multipart.max-file-size=50MB
## total uploaded data size
spring.http.multipart.max-request-size=50MB


ゲートウェイを再起動する(再起動しないと効果がない)、まだ動作しない、SpringまたはSpringBootの設定を確認し続ける もし

FileUploadBase$FileSizeLimitExceededException: The field pic exceeds its maximum allowed size of 1048576 bytes.


org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException.FileSizeLimitExceededException: フィールド pic は、最大許容サイズ 1048576 バイトを超えています。

  Springboot内蔵のtomactのファイル転送のデフォルトが1MBのため、1MB以上のファイルがアップロードできないので、設定を追加します(私のSpringBootのバージョンは1.5.6です)。

#Configure on, open custom
spring.http.multipart.enabled =true  
##You can leave it off
spring.http.multipart.file-size-threshold =0
## The maximum single file limit is small
spring.http.multipart.max-file-size = 50MB
#The size of the total data
spring.http.multipart.max-request-size = 50MB


  Springbootの2.0以降のバージョンでは、以下の変更が必要です。

#Single file size limit
spring.servlet.multipart.max-file-size = 50MB
#Total file limit size
spring.servlet.multipart.max-request-size = 50MB


概要

ファイルをアップロードできない理由は、おそらく次の4つだけです。

  1. 帯域の下でファイルのアップロードの制限を行うサーバー(Nginx、Apache、IISなど、本文はNginxの設定のみ解説しています)
  2. ゲートウェイがアップロードファイルのサイズに制限をかけるので、この時点で設定を追加すればよい。
  3. SpringBoot/Springはアップロードファイルのサイズに制限を設けており、設定を追加するだけです。
  4. ファイルが本当に大きすぎる、フロントとバックエンドのリンクタイムアウトは、自動的にリンクを壊す(あなたが自分で設定することができます、詳細はありません)