OUJOOD.COM
À quoi sert l'attribut formenctype ?
LES ATTRIBUTS HTMLQuand un formulaire est soumis en POST, le navigateur doit choisir comment conditionner les données avant de les expédier. Par défaut, il les compresse dans une chaîne URL — pratique pour du texte, mais inutilisable pour un fichier.
L'attribut formenctype permet de fixer ce format directement sur un bouton type="submit" ou type="image", sans toucher au formulaire. Il écrase ponctuellement l'attribut enctype posé sur la balise <form>.
L'usage classique : un même formulaire avec deux boutons distincts — l'un pour envoyer du texte, l'autre pour joindre un fichier. Chacun porte son propre encodage, sans modifier la structure du formulaire.
Important :formenctypene fonctionne qu'avecmethod="post". En GET, les données transitent dans l'URL — l'encodage multipart n'a pas de sens dans ce contexte.
Syntaxe
L'attribut se place sur le bouton de soumission, pas sur le champ de saisie. C'est ce bouton qui déclenche l'envoi, donc c'est là qu'on définit le format :
<input type="submit" formenctype="multipart/form-data" value="Envoyer">
Exemple : deux boutons, deux encodages différents
Dans cet exemple, le premier bouton envoie les données en encodage standard (texte URL). Le second force multipart/form-data au moment du clic — utile quand le formulaire contient un champ <input type="file">.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Exemple formenctype</title>
</head>
<body>
<form action="page-cible.php" method="post">
Prénom : <input type="text" name="prenom"><br><br>
Nom : <input type="text" name="nom"><br><br>
<!-- Encodage par défaut : application/x-www-form-urlencoded -->
<input type="submit" value="Envoyer"><br><br>
<!-- Encodage forcé sur ce bouton uniquement : multipart/form-data -->
<input type="submit" formenctype="multipart/form-data" value="Envoyer en multipart">
</form>
</body>
</html>
Exemple : upload de fichier avec formenctype
Dès qu'un formulaire contient un champ type="file", l'encodage multipart/form-data est obligatoire. Sans lui, le fichier n'arrive pas côté serveur — seul son nom est transmis, ce qui ne sert à rien.
<form action="upload.php" method="post">
Fichier : <input type="file" name="document"><br><br>
<!-- Sans formenctype="multipart/form-data", le fichier ne sera pas envoyé -->
<input type="submit" formenctype="multipart/form-data" value="Envoyer le fichier">
</form>
Valeurs disponibles
| Valeur | Description |
|---|---|
| application/x-www-form-urlencoded | Valeur par défaut. Les espaces deviennent + et les caractères spéciaux passent en codes hexadécimaux ASCII. Fonctionne bien pour les formulaires texte simples. |
| multipart/form-data | Aucun caractère n'est encodé. Obligatoire pour les formulaires qui envoient des fichiers (type="file"). |
| text/plain | Les espaces deviennent +, les caractères spéciaux restent bruts. Utile pour déboguer rapidement, mais à éviter en production. |
Pour aller plus loin : les types MIME sur Wikipédia.
Compatibilité navigateurs en 2026
formenctype est pris en charge par tous les navigateurs actuels : Chrome, Firefox, Safari, Edge, Opera. Il fait partie de HTML5 — il n'existait pas en HTML 4.01. Internet Explorer ne l'a jamais supporté, mais ce navigateur est officiellement abandonné depuis 2022, donc ça ne pose plus de problème.
Retour à l'accueil du site
Par carabde | Mis à jour le 28 avril 2026