質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

0回答

5139閲覧

【Spring Boot】サイズが大きいファイルをaxiosでpostできない

ssssskkkkk

総合スコア20

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2019/12/22 05:52

編集2022/01/12 10:55

#【Spring Boot】サイズが大きいファイルをaxiosでpostできない
Spring BootでWebアプリケーションを作成しているのですが、 サイズが大きいファイルをaxiosでpostすると以下のエラーが表示されてしまいます。

java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector

以下はリクエストを送信しているコードです。

javascript

1const formData = new FormData(); 2formData.append("video", rawData); //rawDataには動画のデータが格納されています。 3axios.post(routes.videos.store(), formData, { 4 headers: { 5 'content-type': 'multipart/form-data', 6 }, 7}).then(response => { 8 console.log(response); 9});

以下はリクエストを受け付けるコントローラです。

@RequestMapping(value = "videos", method = RequestMethod.POST) public String store(@RequestParam("video") MultipartFile video) { // 具体的な処理は省略します。 }

axiosからではなく、formを用いて送信した場合には、上記のエラーは発生しませんでした。
formを用いて送信した場合のコードは以下です。

html

1<form th:action="@{/videos}" method="post" enctype="multipart/form-data"> 2 <input type="file" name="video"> 3 <input class="btn btn-primary" type="submit" value="アップロード" accept="video/*"> 4</form>

application.propertiesの設定

spring.servlet.multipart.max-file-size=320000000MB spring.servlet.multipart.max-request-size=64000000MB

maxPostSizeを増やすために上記のようにapplication.propertiesを修正してみたのですが、やはり上記のエラーが表示されてしまいました。

よろしくお願いいたします。

追記

・確認に用いているファイルサイズ: 15.7MB
・Spring Bootのバージョン: 2.2.2
・サーブレットコンテナ: Tomcat
・java -version

openjdk version "1.8.0_212" OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

・curlで送信した場合
エラーは表示されませんでしたが、ファイルも保存されませんでした。
以下のコマンドで確認を行いました。

sh

1curl -X POST http://localhost:8080/videos -F "video=@/app/src/main/resources/static/videos/sample.mp4"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rubytomato

2019/12/22 08:14

下記の点について教えてください。 1) エラーが発生するファイルサイズ 2) Spring Bootのバージョンとサーブレットコンテナの種類 3) Javaのバージョン 4) curl等のコマンドでアップロードした時の結果
ssssskkkkk

2019/12/22 08:54

質問文の最後に追記しました。 よろしくお願いいたします。
rubytomato

2019/12/22 09:34

追記ありがとうございました。 下記の環境で再現するか確認してみましたが、質問内容に記載のエラー(IllegalStateException)は起きませんでした。 ・OpenJDK 11 ・Spring Boot 2.2.2 ・Tomcat 9.0.29 (embedded) アプリケーション設定ファイルに下記のように10MBと指定すれば spring.servlet.multipart.max-file-size = 10MB spring.servlet.multipart.max-request-size = 10MB 10MBまでのファイルのアップロードは可能で、10MBを超えた場合は org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (11541901) exceeds the configured maximum (10485760) という例外が発生します。 アップロードはcurl と axios で行いました。 なお、axiosでのファイルアップロード処理は質問内容に記載のコードとほぼ同様です。 サーバー側(Spring Boot側)も、特にコンフィグレーションクラスは作成しておらず、Spring Initializrで作成したひな型アプリケーションにファイルを受けるコントローラークラスを追加しただけのものです。 なので、回答に値する情報はありませんが、エラーが再現するミニマムセットのプロジェクト情報をご提示いただければ、もう少し調べられるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問