Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
FormData オブジェクトは、フェッチまたは XMLHttpRequest API を使用して送信するためのキーと値のペアの集合をコンパイルできます。本来はフォームデータの送信に使用することを想定していましたが、キーのついたデータを伝送するためにフォームとは独立して使用することもできます。伝送されるデータは、フォームのエンコードタイプが multipart/form-data に設定されている場合に、submit() メソッドで送信する際に使用するデータと同じ形式です。
以下のように FormData オブジェクトはあなた自身で作成でき、インスタンス化したら append() メソッドを呼び出すことでフィールドに付加します。
メモ: "avatar" および "webmasterFile" フィールドはどちらも、ファイルを含んでいます。フィールド "accountNum" に与えた数値は FormData.append() メソッドにより直ちに文字列へ変換されます(フィールドの値として Blob、 File、文字列のいずれかを取ることができます。値が Blob でも File でもない場合は、文字列に変換されます)。
この例では、 "username", "accountNum", "avatar", "webmasterFile" というフィールドの値を含む FormData インスタンスを構築し、 fetch() を使用してフォームのデータを送信します。 "webmasterFile" フィールドは Blob です。 Blob オブジェクトは、不変的な生データのファイルのようなオブジェクトを表します。 Blob は、必ずしも JavaScript に適した形式ではないデータを表します。 File インターフェイスは Blob をベースにしており、 Blob の機能を継承し、ユーザーのシステム上のファイルをサポートするように拡張されています。 Blob を作成するには、 Blob() コンストラクターを呼び出します。
既存の <form> のデータを含む FormData オブジェクトを構築するには、 FormData オブジェクトの作成時にその form 要素を指定します。
メモ: FormData は name 属性を使用する入力フィールドのみを使用します。
例:
以下のように、FormData オブジェクトをフォームより取得してから送信するまでの間に、追加のデータを付加することもできます。
これにより、必ずしもユーザーが編集可能である必要がない追加情報を含めるために、送信前にフォームデータを拡張することができます。
FormData を使用してファイルを送信することもできます。type が "file" である <input> 要素を、<form> に含めます。
そして、以下のようなコードを使用して送信できます。
メモ: フォームへの参照を渡した場合は、 open() の呼び出しで指定したリクエストメソッドよりもフォームで指定したメソッドを優先します。
警告: FormData を使用して、XMLHttpRequest またはフェッチ API を使用して、 multipart/form-data の Content-Type で POST リクエストを送信する場合(ファイルや Blob をサーバーにアップロードする場合など)、リクエストの Content-Type ヘッダーを明示的に設定しないでください。そうすると、ブラウザーがリクエスト本文のフォームフィールドの区切りに使用する境界の表現で Content-Type ヘッダーを設定することができなくなります。
以下のように、直接 File や Blob を FormData オブジェクトへ追加することもできます。
append() メソッドを使用する際は、オプションの第 3 引数を使用して、Content-Disposition ヘッダーに含めるファイル名を渡すことができます。これはサーバーへ送信されます。ファイル名を指定しない(あるいは引数がサポートされない)場合は、 "blob" という名前が使用されます。
FormData オブジェクトよりも新しくプラットフォームに追加されたのが formdata イベントです。これは、フォームのデータを表すエントリーのリストが作成された後に HTMLFormElement オブジェクトで発行されます。このイベントは、フォームが送信されたときに発行されますが、 FormData() コンストラクターが呼び出されたときにも発行されます。
これにより、 FormData オブジェクトを formdata イベントの発行を受けてすばやく取得することができるようになり、自分でまとめる必要がなくなります。
例えば、 JavaScript では次のようにフォームを参照できます。
submit イベントのハンドラーでは、 preventDefault を使用して既定のフォーム送信を停止してから、 FormData コンストラクターを呼び出して formdata イベントを発行させます。
formdata イベントが発行されると、 FormData オブジェクトに FormDataEvent.formData を使ってアクセスし、必要な処理を行うことができます(以下では、 XMLHttpRequest を使ってサーバーに送信しています)。
FormData オブジェクトは、無効になっているフィールドや無効になっているフィールドセットのデータを含めることはできません。
This page was last modified on 2025年9月4日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.