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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

2013閲覧

formDataオブジェクトにappend()することができない

pegy

総合スコア245

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2024/02/15 02:38

やりがいこと

複数ファイルをドラッグアンドドロップでアップロードすることをしたいと考えております。そのために、ユーザーがドロップしたファイルを複数受け取るために、事前にFormData型の変数であるformData変数を以下の通り準備して以下のようにループ無いでそれぞれ格納しようとしているのですが、console.log(formData);hereで実行する結果、必要な情報がappendされません。

ご質問

これがappendされ情報が格納されない理由と、解決方法についてアドバイスを頂けますと幸いです。

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

html

1 <div class="drop-area"> 2 <label> 3 <input type="file" name="example" accept="image/jpeg, image/png" class="uploader"> 4 <div class="preview-area"></div> 5 </label> 6</div>

Javascript

1 var formData = new FormData(); 2 $(document).on('drop', '.drop-area' ,function (event) { 3 var files = event.originalEvent.dataTransfer.files; 4 for (var i = 0; i < files.length; i++) { 5 console.log(files[i]);//works 6 formData.append('document_files[]', files[i]); 7 } 8 console.log(formData);here 9 $(this).find('.uploader').trigger('change');//プレビューを表示できるようにする 10 11 }) 12

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

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

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

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

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

yambejp

2024/02/15 03:08

追加だけで削除はしなくてよいのでしょうか?
guest

回答2

0

ベストアンサー

console.log(formData);hereで実行する結果、必要な情報がappendされません。

この方法では、正しく入っていても中身を確認できません

console.log(...formData.entries())のようにして確認してみましょう(参考)。

投稿2024/02/15 02:42

maisumakun

総合スコア146526

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

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

pegy

2024/02/16 02:41

確認することができました、ありがとうございます!
guest

0

こんな感じでどうでしょう?

javascript

1<style> 2.drop-area{ 3border:1px solid; 4 position:relative; 5height:200px; 6} 7.uploader{ 8position:absolute; 9top:0; 10width:100%; 11height:100%;; 12opacity:0; 13 background-Color:lime; 14} 15</style> 16<script> 17const fd=new FormData(); 18document.addEventListener('click',e=>{ 19 const {target}=e; 20 if(target.matches('.uploader')){ 21 e.preventDefault(); 22 } 23}); 24document.addEventListener('drop',e=>{ 25 e.preventDefault(); 26 const {target}=e; 27 if(target.matches('.uploader')){ 28 [...e.dataTransfer.files].forEach(x=>fd.append("document_files[]",x)); 29 console.log([...fd]); 30 } 31}); 32</script> 33<div class="drop-area"> 34ここにdrop 35 <label> 36 <input type="file" name="example" accept="image/jpeg, image/png" class="uploader" multiple> 37 <div class="preview-area"></div> 38 </label> 39</div>

投稿2024/02/15 03:19

yambejp

総合スコア117615

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

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

pegy

2024/02/16 01:06

ご回答ありがとうございます。 申し訳ございませんが、初心者であるため、記法でわからないものがあり変数に対する括弧書き{target}や...について、調べながら確認をしております。 質問欄へのコメントについてですが、削除も意図しており、そこは配列において、削除したい要素を特定してarray.splice()することをイメージしておりました。ご質問の趣旨と相違しておりましたら、またご指摘願えれば幸いです。
pegy

2024/02/16 01:10

すみません、スプレッド演算子については、理解いたしました。これまで配列を入れ替えたりMergeしたりするときはループで回していたりしたのですが、便利な記法があるのですね、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問