画像アップロード時には最大ファイルサイズが存在する
ファイルアップでは、サーバにファイルを保存するわけですが、ファイルサイズに上限はあります。
アプリによっては容量の大きなファイルをアップロードする場面もありますので、その上限が小さいと不都合が生じますよね。
そんな時はサーバの設定を変更することで簡単に解決できます。
Tomcat + Nginx + Spring Bootの場合のエラー
今回はこの構成例での解決法を記しますが、この構成例でファイルサイズが大きい場合、Tomcatのログで以下のようなエラーログが書き出されます。
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (33358673) exceeds the configured maximum (20971520)]
簡単に言えば、20971520バイト(約21MB)がアップロードの上限にも関わらず、33358673バイト(約33MB)のファイルがアップロードされているためにエラーが発生しています。
各種設定変更
今回は例として、200MBのファイルをアップロードできるように設定していきたいと思います。
Spring Bootの設定
Spring Bootの場合は@Configurationアノテーションを付与したクラスに対して、以下のようなBeanの設定を加えてください。
@Configuration public class MultiPartConfig { @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); factory.setMaxFileSize("200MB"); // 1ファイルあたりの最大値 factory.setMaxRequestSize("200MB"); // 1リクエストあたりの最大値 return factory.createMultipartConfig(); } }
※setMaxFileSizeだけを引き上げてもリクエストあたりの最大値を引き上げなければ意味がないため、setMaxRequestSizeも変更してください。
Tomcatの設定
Tomcatの場合はserver.xmlファイルを変更する必要があります。
使用するConnectorで(SSL対応している場合はport="8443"、していない場合はport="8080")、maxPostSizeを指定してください。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" maxPostSize="200000000"/>
変更後はTomcatの再起動を忘れずに!
Nginxの設定
最後にNginxですが、ここでは以下のようにclient_max_body_sizeというものを設定します。
SSL対応の有無によって、設定箇所は変わるので注意してください。
対応していればlistenが443、対応していなければlistenが80の場所です。
server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name test.net; root /usr/share/nginx/html; client_max_body_size 200M; ・ ・ ・
変更後はNginxの再起動を忘れずに行ってください。
ちなみに今回はTomcatと連携した場合の対応を行っていますが、Nginx単独で動かす場合もこの変更は有効です。
まとめ
変更箇所が3箇所もあるのでちょっと手間ですよね。
そんなに変更が頻繁に発生するものでもないですが、変更時は漏れがないように注意してください。
ブラウン アルコール洗浄液 (2個入) メンズシェーバー用 CCR2 CR【正規品】
- メディア: ホーム&キッチン
SALONIA サロニア ストレートアイロン プロ仕様230℃ 海外対応
- メディア: ホーム&キッチン
NEC LEDシーリングライト LIFELED'S 調光タイプ ~8畳 HLDZB0869
- メディア: ホーム&キッチン
オムロン 体重・体組成計 カラダスキャン ホワイト HBF-214-W
- 発売日: 2011/09/06
- メディア: ホーム&キッチン
パナソニック カナル型イヤホン イエロー RP-HJE150-Y
- 発売日: 2008/10/15
- メディア: エレクトロニクス