同じXMLHttpRequestでファイルとパラメータを一緒に送信する方法
XMLHttpRequestでファイルとパラメータを同時に送信する方法
JavaScriptのXMLHttpRequestを使って、ファイルと通常のパラメータ(文字列や数値など)を1つのリクエストでまとめて送信したい場合、FormDataオブジェクトを利用するのが最も簡単です。FormDataを使えば、HTMLフォームのようにキーと値のペアを自由に追加でき、ファイルも含めてひとつのリクエストとして送信できます。
実装コード例
var myForm = new FormData();
myForm.append('param1', 'demo');
myForm.append('param2', 6767);
myForm.append('myDir', 'public-data');
myForm.append('demofile', file);
xhr.send(myForm);
コードの解説
まずnew FormData()で空のFormDataオブジェクトを作成し、append()メソッドを使って送信したいデータを順番に追加していきます。
- param1:文字列「demo」を送る通常のパラメータ
- param2:数値「6767」を送るパラメータ
- myDir:保存先ディレクトリ名などの付加情報
- demofile:アップロードするファイルオブジェクト(例:
<input type="file">から取得したもの)
必要なデータをすべて追加したら、最後にxhr.send(myForm)を呼び出すだけで完了です。これにより、ファイルと複数のパラメータが同一のリクエストに含まれてサーバーへ送信されます。
注意点
FormDataオブジェクトをsend()に渡した場合、Content-Typeヘッダーは自動的にmultipart/form-dataに設定されます。そのため、ヘッダーを手動で設定すると境界文字列(boundary)が壊れてしまうことがあるので、setRequestHeader()でのContent-Type指定は行わないようにしましょう。
-
重複ファイル検索・削除ツールの選び方とおすすめソフト「Duplicate Files Fixer」の使い方
パソコンやスマートフォンのストレージ容量が不足してきたとき、多くの人はまず不要なデータの整理から始めようとします。その中でも特に重要なのが「重複ファイル」の削除です。同じファイルが何度も保存され、知らないうちに貴重なメモリ領域を圧迫しているケースは少なくありません。 重複ファイルを手作業で探し出すことも可能ですが、ファイル数が多いと混乱しやすく、専用の重複ファイル検索ツールを使う場合に比べて大幅に時間がかかります。では、どの重複ファイル検索・削除ソフトを選べばよいのでしょうか。 本記事では、デバイスに最適な重複ファイルファインダー&リムーバーを選ぶためのポイントと、おすすめソフトの具体的な使い
-
1つのツールでスクリーンショットと動画を同時にキャプチャする方法【TweakShot Screen Capture】
画面に表示されている内容のスクリーンショットを撮りたい場合や、画面上の操作を動画として録画したい場合、通常は2種類の異なるアプリケーションが必要になります。しかし、画面を画像として保存することと動画として記録することは、本質的には密接に関連した作業です。だからこそ、両方のタスクを1つの使いやすいツールで完結できるのが理想です。今回は、スクリーンショット撮影と動画録画の両方に対応したTweakShot Screen Captureをご紹介します。 同じツールでスクリーンショットと動画をキャプチャする手順 TweakShot Screen Captureを使えば、スクリーンショットの撮影も動画の録