JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

同じ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指定は行わないようにしましょう。

  1. 重複ファイル検索・削除ツールの選び方とおすすめソフト「Duplicate Files Fixer」の使い方

    パソコンやスマートフォンのストレージ容量が不足してきたとき、多くの人はまず不要なデータの整理から始めようとします。その中でも特に重要なのが「重複ファイル」の削除です。同じファイルが何度も保存され、知らないうちに貴重なメモリ領域を圧迫しているケースは少なくありません。 重複ファイルを手作業で探し出すことも可能ですが、ファイル数が多いと混乱しやすく、専用の重複ファイル検索ツールを使う場合に比べて大幅に時間がかかります。では、どの重複ファイル検索・削除ソフトを選べばよいのでしょうか。 本記事では、デバイスに最適な重複ファイルファインダー&リムーバーを選ぶためのポイントと、おすすめソフトの具体的な使い

  2. 1つのツールでスクリーンショットと動画を同時にキャプチャする方法【TweakShot Screen Capture】

    画面に表示されている内容のスクリーンショットを撮りたい場合や、画面上の操作を動画として録画したい場合、通常は2種類の異なるアプリケーションが必要になります。しかし、画面を画像として保存することと動画として記録することは、本質的には密接に関連した作業です。だからこそ、両方のタスクを1つの使いやすいツールで完結できるのが理想です。今回は、スクリーンショット撮影と動画録画の両方に対応したTweakShot Screen Captureをご紹介します。 同じツールでスクリーンショットと動画をキャプチャする手順 TweakShot Screen Captureを使えば、スクリーンショットの撮影も動画の録