web-dev-qa-db-fra.com

jQuery ou JavaScript: obtenir le type de fichier client MIME

Je souhaite détecter le type MIME d'un fichier côté client de mon application en utilisant jQuery ou JavaScript. Y a-t-il un moyen de faire cela? Merci.

24
SZH

Vous pouvez utiliser AJAX, faire une requête HEAD) et inspecter les en-têtes de réponse pour le Content-type entête. Mais cela ne fonctionne que si vous obtenez un fichier d'un serveur HTTP.


Pour obtenir le type MIME d'un fichier choisi avec un sélecteur de fichier HTML, sans rien soumettre, essayez:

document.getElementById('fileChooserID').files[0].type // e.g. image/png

Exemple

http://jsbin.com/akati3/2

Essayez de choisir une image, vérifiez le type MIME et essayez de la soumettre. Ensuite, essayez autre chose qui n'est pas une image.

33
Delan Azabani

Le seul moyen de de manière fiable détecter un type mime est d'analyser le fichier côté serveur, pour confirmer qu'il s'agit du type que l'utilisateur prétend qu'il est, ou qu'il correspond à une liste de types autorisés . Choses à considérer:

1 - JavaScript a un accès limité au système de fichiers local, et pour une bonne raison.

2 - Vous ne pouvez pas faire confiance à un type mime qui a été reçu d'un navigateur. Il ne correspondra pas nécessairement au type mime du fichier envoyé.

3 - Dans une situation où l'utilisateur est autorisé à télécharger des fichiers qui correspondent à une `` liste blanche '' de types autorisés, la validation est probablement nécessaire de toute façon - étant donné que l'application pourrait avoir à faire quelque chose avec le fichier au-delà de leur stockage, ce qui impliquent au moins d'analyser leurs en-têtes pour des informations telles que la longueur de la série (pour une vidéo) le numéro de version (pour un document Word) et ainsi de suite.

5
karim79

l'idée IS PAS confiance dans le navigateur..l'idée est d'effectuer ces validations sur SERVER SIDE mais, quelle chose utile si avant d'envoyer un fichier de 20 Mo au navigateur et ensuite être rejeté parce qu'un règle dans le serveur ... donc, c'est une bonne idée de "pré-vérifier" si ce fichier "est un candidat" à uploader, la validation finale sera effectuée sur le serveur.

4
christian