logo oujood
🔍

L'attribut formenctype de la balise <input>

Choisissez comment vos données sont encodées avant d'être envoyées au serveur.

OUJOOD.COM

À quoi sert l'attribut formenctype ?

LES ATTRIBUTS HTML

Quand 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 : formenctype ne fonctionne qu'avec method="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 :

  📋 Copier le code

<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">.

  📋 Copier le code

<!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.

  📋 Copier le code

<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