Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
L'objet FormData vous permet de compiler un ensemble de paires clé/valeur à envoyer à l'aide de l'API XMLHttpRequest. Il est principalement destiné à l'envoi de données de formulaire, mais il peut également être utilisé indépendamment des formulaires pour transmettre des données indexées. Le format des données transmises est le même que celui utilisé par la méthode submit() du formulaire pour envoyer les données lorsque l'encodage de ce dernier est défini sur multipart/form-data.
Vous pouvez construire un objet FormData vous-même, créer une instance, puis y ajouter des champs en appelant la méthode append(), comme suit :
Note : Les champs « userfile » et « webmasterfile » contiennent tous deux un fichier. Le numéro attribué au champ « accountnum » est immédiatement converti en chaîne par la méthode FormData.append() (la valeur du champ peut être un objet Blob, File ou une chaîne : s'il ne s'agit ni d'un objet Blob, ni d'un objet File, la valeur est convertie en chaîne).
Dans cet exemple, une instance FormData contenant les valeurs des champs « username », « accountnum », « userfile » et « webmasterfile » est créée, puis la méthode XMLHttpRequest.send() est utilisée pour envoyer les données du formulaire. Le champ « webmasterfile » est un objet Blob. Un objet Blob représente un objet-fichier de données brutes immuables. Les blobs représentent des données qui ne sont pas nécessairement dans un format JavaScript natif. L'interface File se base sur l'objet Blob, elle en hérite les fonctionnalités et les étend pour prendre en charge les fichiers du système d'exploitation. Pour construire un Blob, vous pouvez invoquer le constructeur Blob().
Pour construire un objet FormData contenant les données d'un élément HTML <form> existant, spécifiez cet élément lors de la création de l'objet :
Par exemple :
Vous pouvez également ajouter des données supplémentaires à l'objet FormData entre la récupération depuis le formulaire et son envoi, comme suit :
Vous pouvez ainsi ajouter des données au formulaire avant de l'envoyer, pour y inclure des informations supplémentaires que les utilisatrices et utilisateurs ne peuvent pas nécessairement modifier.
L'objet FormData vous permet également d'envoyer des fichiers. Il vous suffit d'inclure un élément HTML <input> de type file dans votre élément <form> :
Vous pouvez ensuite l'envoyer à l'aide du code suivant :
Note : Si vous passez une référence dans le formulaire, la méthode HTTP spécifiée dans ce dernier sera utilisée au lieu de celle définie dans l'appel de la méthode open().
Attention : Lors de l'utilisation de FormData pour envoyer des requêtes POST à l'aide de XMLHttpRequest ou de l'API Fetch pour du contenu de type multipart/form-data (par exemple pour téléverser des fichiers ou des blobs vers le serveur), il ne faut pas indiquer de façon explicite l'en-tête Content-Type sur la requête. Si vous le faites, cela empêchera le navigateur de renseigner l'en-tête Content-Type avec l'expression de limite qui sera utilisée pour délimiter les champs du formulaire dans le corps de la requête.
Vous pouvez également ajouter un objet File ou Blob directement dans l'objet FormData :
Avec la méthode FormData.append(), vous pouvez utiliser le troisième paramètre facultatif pour passer un nom de fichier dans l'en-tête Content-Disposition envoyé au serveur. Si aucun nom de fichier n'est spécifié (ou si le paramètre n'est pas pris en charge), le nom « blob » est utilisé.
L'évènement formdata, apparu après FormData, est déclenché sur un objet HTMLFormElement après que la liste des données du formulaire a été construite. Cela se produit nativement lors de l'envoi du formulaire, mais peut aussi être déclenché par l'appel au constructeur FormData().
On peut ainsi récupérer un objet FormData dès le déclenchement de l'évènement formdata, plutôt que de l'assembler soi-même.
Dans cette démo sur formdata, on fait référence au formulaire dans le code JavaScript :
Dans le gestionnaire d'évènement pour l'évènement submit, on utilise preventDefault afin d'interrompre l'envoi normal du formulaire, puis on invoque le constructeur FormData() afin de déclencher l'évènement formdata :
Lorsque l'évènement formdata se déclenche, on peut accéder à l'objet FormData en utilisant FormDataEvent.formData. On peut alors le manipuler comme bon nous semble (ici, nous l'envoyons au serveur à l'aide de XMLHttpRequest).
L'objet FormData n'inclut pas les données du formulaire pour les champs ou ensembles de champs (<fieldset>) qui sont désactivés.
Cette page a été modifiée le 7 sept. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.