Le type MIME d'un fichier, appelé aujourd'hui type de média, est une étiquette de la forme type/sous-type qui décrit la nature d'un contenu, par exemple image/png pour une image PNG ou application/pdf pour un document PDF. Pour le vérifier de façon fiable, retenez que le navigateur déduit généralement ce type de l'extension du nom de fichier sans en lire le contenu. Pour identifier plus précisément le format, il faut examiner le contenu du fichier, et lors d'un téléversement cette vérification doit aussi se faire côté serveur.
Qu'est-ce que le type MIME d'un fichier ?
Selon la documentation MDN sur les types MIME (consultée le 29 octobre 2026), un type de média, anciennement appelé type MIME, indique la nature et le format d'un document, d'un fichier ou d'une suite d'octets. Il est défini par la RFC 6838, et c'est l'IANA qui gère l'ensemble des types officiels. La liste la plus à jour est donc celle de l'IANA.
La structure ne varie pas. Elle associe un type et un sous-type, séparés par une barre oblique sans espace, comme text/csv ou video/mp4. Les deux parties sont insensibles à la casse, mais l'usage veut qu'on les écrive en minuscules. Un paramètre peut s'ajouter après un point-virgule, sous la forme type/sous-type;paramètre=valeur. Par exemple, text/plain;charset=UTF-8, qui précise l'encodage des caractères d'un texte brut.
MDN distingue deux familles. Les types discrets décrivent un seul fichier ou un seul média, par exemple application, audio, font, image, text ou video. Les types multiparties, message et multipart, regroupent plusieurs éléments dans un même envoi.
Extension et type MIME, deux informations différentes
L'extension fait partie du nom du fichier, alors que le type MIME est une information qui accompagne le contenu. Comme le formule MDN, « Les navigateurs utilisent le type MIME, et non l'extension de fichier, pour déterminer comment traiter une URL ». Une feuille de style nommée style.css mais servie avec un mauvais type ne sera pas traitée comme du CSS. C'est pourquoi le serveur doit envoyer le bon en-tête Content-Type avec chaque fichier.
À l'inverse, lorsque vous sélectionnez un fichier sur votre ordinateur dans un formulaire, aucun serveur n'a encore fourni de type. Le navigateur doit donc en attribuer un lui-même. D'après la documentation MDN de la propriété Blob.type, dont les objets File héritent (consultée le 29 octobre 2026), il ne lit généralement pas les octets du fichier et suppose le type d'après l'extension.
Dans les deux situations présentées ici, le type a donc une origine différente. Pour une page ou un fichier téléchargé, il vient de l'en-tête Content-Type envoyé par le serveur. Pour un fichier sélectionné localement, il vient du nom, et le renommer change le type annoncé sans changer son contenu.
Voir le type MIME d'un fichier avec le Vérificateur de digily.link
Le Vérificateur de type MIME de fichier affiche le type que votre navigateur attribue à un fichier. Digily Link est notre produit, et l'outil est accessible à tous sur digily.link.
- Ouvrez le Vérificateur de type MIME de fichier.
- Dans le champ « Fichier », sélectionnez le fichier à examiner.
- Les résultats apparaissent dès que le fichier est choisi. Le bouton « Soumettre » n'envoie rien, car l'envoi du formulaire est bloqué dans la page.
- Lisez les quatre lignes affichées, « Nom », « Taille », « Type » et « Date de dernière modification ».
La vérification se fait dans votre navigateur, sans téléversement du fichier vers nos serveurs. Le navigateur lit son nom, sa taille et le type qu'il lui attribue, puis l'outil affiche ces valeurs.
La ligne « Taille » est calculée en base 1 000 (un kilo-octet vaut ici 1 000 octets) et arrondie à une décimale. La ligne « Type » reprend la valeur File.type du navigateur. Le type affiché est celui que le navigateur déduit de l'extension, et l'outil ne lit pas le contenu du fichier.
Pourquoi le type affiché par le navigateur peut surprendre
Un résultat inattendu vient du nom du fichier ou de la configuration de l'ordinateur, puisque le contenu n'est jamais lu. Voici quatre cas, tous décrits dans la documentation MDN.
Un fichier renommé garde son contenu mais change de type
MDN cite l'exemple d'un fichier PNG renommé en .txt. Le navigateur annonce alors text/plain, bien qu'il s'agisse toujours d'une image. Un fichier PNG renommé en .txt apparaîtra donc généralement comme text/plain dans notre outil, de même qu'un faux PDF nommé facture.pdf apparaîtra comme application/pdf.
Le champ Type est vide
En règle générale, le type n'est fiable que pour les formats répandus, comme les images, le HTML, l'audio ou la vidéo. Pour une extension rare, ou un fichier sans extension, File.type peut renvoyer une chaîne vide si le navigateur ne parvient pas à déterminer le type. La page MDN sur Blob.type confirme qu'une chaîne vide est renvoyée quand le type ne peut pas être déterminé. Si la case Type reste vide, le navigateur ne connaît pas cette extension.
Un résultat qui change d'un ordinateur à l'autre
MDN signale que la configuration du poste, par exemple le Registre de Windows, peut produire des valeurs inattendues, même pour des types courants. Le même fichier CSV peut ainsi afficher text/csv sur une machine et une autre valeur ailleurs. Si un collègue obtient un résultat différent, comparez vos navigateurs et vos systèmes avant de soupçonner le fichier.
Une date de modification à prendre avec prudence
La ligne « Date de dernière modification » s'appuie sur la propriété lastModifiedDate, que MDN déclare obsolète et non standard. Elle a été retirée de la spécification au profit de File.lastModified. Selon votre navigateur, cette ligne peut donc rester vide ou afficher « undefined ». Ne vous y fiez pas pour dater un fichier.
Faites le test avec quelques fichiers
Pour voir ces mécanismes à l'œuvre, préparez quelques copies de fichiers et passez-les dans l'outil. Les noms ci-dessous sont des exemples fictifs. Les résultats attendus proviennent de la documentation MDN et non d'un test de notre part ; vérifiez-les donc dans votre propre navigateur.
| Fichier (exemple fictif) | Type attendu dans l'outil | Raison |
|---|---|---|
| rapport.pdf | application/pdf | Extension courante, bien connue du navigateur |
| photo.png renommé en photo.txt | text/plain | Le type est déduit de l'extension (exemple donné par MDN) |
| LICENSE (sans extension) | Souvent vide, selon le navigateur et le système | Aucune extension à partir de laquelle déduire un type |
| données.csv | text/csv, ou une autre valeur selon le système | La configuration du poste peut influer sur le résultat |
Les types MIME courants à connaître
Le tableau reprend dix types courants, tous présents dans la documentation MDN.
| Extension | Type MIME | Contenu |
|---|---|---|
| application/pdf | Document PDF | |
| .jpg, .jpeg | image/jpeg | Photo JPEG |
| .png | image/png | Image PNG |
| .webp | image/webp | Image WebP |
| .svg | image/svg+xml | Image vectorielle SVG |
| .csv | text/csv | Données tabulaires au format CSV |
| .json | application/json | Données JSON |
| .zip | application/zip | Archive ZIP |
| .mp4 | video/mp4 | Vidéo MP4 |
| .woff | font/woff | Police web WOFF |
Pour un site, retenez aussi text/html, text/css et text/javascript. Pour les autres formats, la liste des types MIME courants de MDN est plus complète.
Comment connaître le vrai type d'un fichier ?
Le vrai type d'un fichier se lit dans son contenu, et non dans son nom ou dans le type annoncé par le navigateur. Beaucoup de formats commencent par une suite d'octets caractéristique, souvent appelée signature ou « nombre magique ». Pour les formats qui en possèdent une, lire le début du fichier et le comparer à la signature des formats attendus aide à reconnaître le type. Cette vérification ne suffit toutefois pas à garantir la validité ou la sécurité du fichier. Le guide OWASP sur le téléversement de fichiers (consulté le 29 octobre 2026) précise qu'elle ne doit pas être utilisée seule, car la contourner est courant et facile. Notre Vérificateur ne fait pas cette analyse ; il se contente de montrer la déduction du navigateur.
Ce contrôle a sa place côté serveur, au moment où le fichier arrive. Voici une démarche de diagnostic simplifiée, qui ne constitue pas à elle seule une sécurisation complète des téléversements.
- Considérez l'extension comme une simple indication.
- Traitez aussi le type annoncé par le client comme une indication, puisqu'il peut reposer sur la même déduction à partir du nom.
- Lisez le contenu reçu et vérifiez qu'il correspond à l'un des formats que vous acceptez.
- Refusez le fichier si le contenu et le format attendu ne concordent pas, puis renvoyez un message clair à l'utilisateur.
Le navigateur peut lui-même tenter de déterminer le type du contenu, ce qu'on appelle le reniflage MIME (MIME sniffing). D'après MDN, quand le type manque ou semble faux, il peut examiner le contenu pour deviner le format. Ce comportement varie selon les navigateurs et pose des problèmes de sécurité ; il ne remplace donc pas un contrôle côté serveur.
Deux types MIME génériques sont utiles lorsque le format exact n'est pas connu. Le type application/octet-stream désigne des données binaires inconnues. Lorsqu'on ouvre directement une telle ressource, le navigateur propose généralement de l'enregistrer plutôt que de l'afficher, mais ce comportement peut varier selon le contexte. Le type text/plain désigne un texte de nature inconnue. MDN précise qu'il ne signifie pas « n'importe quelle donnée textuelle ». Une feuille de style reçue en text/plain n'est pas traitée comme du CSS.
L'attribut accept des formulaires ne valide pas le type des fichiers
L'attribut accept ne valide pas les types des fichiers sélectionnés. Il guide seulement le sélecteur de fichiers. Selon la page MDN de l'attribut accept (consultée le 29 octobre 2026), il s'applique à l'élément <input type="file"> et prend comme valeur une liste d'éléments séparés par des virgules.
- Une extension, insensible à la casse, comme .jpg ou .pdf.
- Un type MIME valide, écrit sans extension, comme image/png ou application/pdf.
- Un joker de famille, audio/*, video/* ou image/*.
Le champ <input type="file" accept="image/*,.pdf" /> propose ainsi en priorité les images et les PDF. MDN rappelle cependant que, dans la plupart des cas, l'utilisateur peut changer l'option du sélecteur et choisir un fichier d'un autre type. Il conclut sans détour que « vous devez toujours valider la contrainte attendue côté serveur ».
Il en va de même pour un contrôle en JavaScript fondé sur File.type. MDN conseille de ne pas utiliser cette propriété comme seul moyen de validation. Une vérification dans la page sert à afficher un message immédiat à l'utilisateur. La décision d'accepter ou de refuser le fichier se prend sur le serveur, à partir du contenu reçu.
Voir et corriger le type MIME envoyé par le serveur
Pour connaître le type qu'un serveur annonce, ouvrez les outils de développement de votre navigateur, affichez l'activité réseau, sélectionnez la requête du fichier et lisez l'en-tête Content-Type de la réponse. Comparez cette valeur à celle qui correspond à l'extension, par exemple text/css pour une feuille de style ou application/pdf pour un PDF.
Si la valeur est absente ou fausse, la correction se fait dans la configuration du serveur ou de l'application qui sert le fichier. La méthode dépend de votre logiciel serveur, dont la documentation indique comment associer chaque extension à un type. Une fois la modification faite, vérifiez de nouveau l'en-tête.
Pensez aussi à l'en-tête X-Content-Type-Options. MDN explique qu'un serveur peut s'en servir pour empêcher le reniflage MIME, avec la valeur nosniff. Le navigateur cesse alors de deviner le format à partir du contenu. Un Content-Type erroné n'est plus compensé. Les feuilles de style qui n'arrivent pas en text/css et les scripts dont le type n'est pas un type JavaScript sont alors bloqués, d'où l'intérêt de contrôler les en-têtes de ces fichiers avant d'activer cette protection.
Tableau de dépannage des types MIME
Pour diagnostiquer un problème de type MIME, confrontez trois éléments, le nom du fichier, le type annoncé et le contenu réel.
| Symptôme | Cause possible | À vérifier |
|---|---|---|
| Un formulaire refuse votre fichier | L'extension ou le type déduit par le navigateur ne fait pas partie des formats acceptés, ou le contenu ne correspond pas au nom | Affichez le type dans le Vérificateur. Si le fichier a été renommé, exportez-le dans le bon format au lieu de modifier seulement son extension |
| Un fichier s'ouvre dans le navigateur au lieu d'être téléchargé | Le serveur annonce un type que le navigateur sait afficher, comme application/pdf | Lisez les en-têtes Content-Type et Content-Disposition dans les outils de développement. Selon la page MDN de Content-Disposition, la valeur attachment indique que le fichier doit être téléchargé, la plupart des navigateurs ouvrant alors la boîte « Enregistrer sous » |
| Le CSS ou le JavaScript d'une page ne se charge pas | Le serveur envoie un type inadapté, par exemple text/plain pour une feuille de style | Vérifiez que les feuilles de style arrivent en text/css et les scripts en text/javascript |
| La case Type reste vide dans l'outil | Extension rare ou absente, inconnue du navigateur | Regardez le nom complet du fichier. Seul un contrôle du contenu peut confirmer le format réel |
| Le même fichier affiche deux types sur deux ordinateurs | Configuration différente du poste, comme le Registre de Windows | Testez sur un autre navigateur ou une autre machine, et fondez la validation sur le contenu côté serveur |
Avant de réessayer d'envoyer un fichier refusé par un formulaire, vous pouvez vérifier le type d'un fichier avec le Vérificateur de type MIME de fichier. L'outil affiche la valeur que votre navigateur déduit de l'extension, ce qui peut suffire à repérer un fichier mal nommé ou une extension inconnue.