Le type "application/x-www-forme-urlencoded" est inefficace pour envoyer de grandes quantités de données binaires ou des textes qui contiennent des caractères non-ASCII. C'est le type par défaut. Le type "multipart/form-data" devrait être utilisé pour soumettre des formulaires qui contiennent des données non-ASCII, et des données binaires.
En général, l'attribut "enctype" spécifie le type MIME utilisé pour soumettre le formulaire au serveur. Lorsque la valeur de l'attribut "method" vaut "post", la valeur associée par défaut est "application/x-www-form-urlencoded". La valeur "multipart/form-data" est employée lorsque le formulaire inclut le téléchargement de fichiers associés.
<form action="http://server.com/cgi/handle" enctype="multipart/form-data" method="post"> Votre nom ? <input type="text" name="Nom"><br> Quels fichiers voulez-vous envoyer ? <input type="file" name="fichiers"><br> <input type="submit" value="Envoyer"> <input type="reset" value="Annuler"> </form> |
Comme avec tous les types MIME multipart, chaque partie a un en-tête "Content-type" facultatif qui par défaut est "text/plain". les navigateurs devraient fournir l'en-tête du "Content-type", accompagné par un paramètre "charset". Bref, à savoir, la valeur "text/plain" est utilisée le plus couramment afin d'encoder les formulaires provenant de la plupart des sites.
<form action="http://server.com/cgi/handle" enctype="text/plain" method="post"> Nom ? <input type="text" name="submit-name"><br> Adresse ? <input type="text" name="Adresse"><br> <input type="submit" value="Envoyer"> <input type="reset" value="Annuler"> </form> |
Si le contenu d'un fichier est soumis au serveur par l'intermédiaire d'un formulaire, l'entrée du fichier devrait être identifiée par le "content-type" approprié, par exemple, "application/octet-stream". Si les fichiers multiples seront retournés comme le résultat d'une entrée unique du formulaire, ils devraient être retournés comme "mulltipart/mixed" intégré à l'intérieur du "multipart/form-data"
<form action="http://server.com/cgi/handle" enctype="multipart/mixed" method="post"> Nom ? <input type="text" name="submit-name"><br> Adresse ? <input type="text" name="Adresse"><br> Quels fichiers images voulez-vous envoyer ? <input type="file" name="Images"><br> <input type="submit" value="Envoyer"> <input type="reset" value="Annuler"> </form> |
Pour en savoir plus sur les types d'encodage, le site de l'organisation W3C vous offre de plus amples explications, mais le contenu de ce site est en langue anglaise.