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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Java

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

Spring Boot

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

Q&A

1回答

3650閲覧

VueからSpringへ画像ファイルとオブジェクトを送る際、画像が空のときの処理方法

tennis

総合スコア19

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Java

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

Spring Boot

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

0グッド

0クリップ

投稿2020/07/10 06:48

編集2020/07/10 07:00

問題

Vueから画像ファイルとオブジェクトを送る際、画像が空のときの処理でエラーが出ます。

error

1Resolved [org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present

画像ファイルが存在すれば、formDataの中にはfileとobjが入り、Javaの/insertに送信されます。
画像とオブジェクトの同時送信については成功しています。

画像を空のまま送信しようとするとエラーが出てしまうので、
空でも送信できるようにしたいです。

Javaで受け取る際の問題なのでしょうか、よろしくお願いします。

コード

vue

1<input type="text" name="hoge" /> 2<input 3 type="file" 4 name="file" 5 accept=".jpg" 6 @change="onFileChange" 7/> 8<button @click="insert()">送信</button> 9 10---------------------略------------------------ 11 12<script> 13methods: { 14onFileChange(e) { 15 var files = e.target.files || e.dataTransfer.files[0]; 16 this.file = files[0]; 17 }, 18insert() { 19 let config = "" 20 let formData = new FormData(); 21 const obj = { 22 id: 1, 23 name: 'hoge', 24 } 25 if(this.file !== "") { 26 formData.append('file', this.file); 27 formData.append('obj',new Blob([JSON.stringify(obj)], {type : 'application/json'})) 28 config = { 29 headers: { 30 'content-type': 'multipart/form-data' 31 } 32 }; 33 } else { 34 formData.append('obj',new Blob([JSON.stringify(obj)], {type : 'application/json'})) 35 } 36 Promise.resolve().then(() => 37 this.$axios.post("/insert", formData, config)

Java

1@RequestMapping("/insert") 2 public Engineer insert(@RequestPart("obj") Form form, @RequestParam("file") MultipartFile uploadFile)

試してみたこと

elseの中でもconfigをつけ、formData.append('file', "")やnullを登録してみたけどできませんでした

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

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

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

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

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

m.ts10806

2020/07/10 12:22

例外が明示されているので「MissingServletRequestPartException」を拾えば良いかと思うのですが、そういうことではなくてでしょうか。
退会済みユーザー

退会済みユーザー

2020/07/10 17:11

@m.ts10806 Springのdiは基本必須で、任意項目は明示できるようになってるのよね。
guest

回答1

0

なぜドキュメントよまないの?requiredとかかいてあるよね。
英語だからなげてる?
Pleiadesの作者が和訳してくれてるし、ブラウザが翻訳してくれるし読めないのではなく読まないのはなぜ?

投稿2020/07/10 17:06

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問