JS et le type.correspondance en tant que type mime de fichier - besoin de conseils
Aujourd'hui, j'ai fait face à une chose intéressante comme L'API de fichiers FF et séparer les fichiers par leurs types. OK voici un petit extrait comme
if (!input.files[0].type.match('image.*')) {
window.alert("Select image please");
return;
}
il contrôle l'image en lecture seule. Mais qu'en est fichiers doc et pdf par exemple? Je n'ai pas pu trouver d'exemples utiles pour cette chose donc j'espère que vous pouvez partager quelques bribes. La chose que je suis intéressé à détecter différents types de fichiers, mais comment puis-je contrôler différents types de fichiers avec JS et son type.match lié?
ici est le code de base
tout commentaire utile est apprécié:)
2 réponses
donc l'idée de base est que ce code utilise des objets File, pour plus d'informations sur eux voir:
- http://www.w3.org/TR/FileAPI / (the spec)
- https://developer.mozilla.org/en/DOM/File (Mozilla implementation)
- https://developer.mozilla.org/en/DOM/FileReader
comme spécifié par w3 , l'attribut type
de L'objet File est un type MIME. Ceci est défini dans la RFC 2046 . Mais la spécification elle-même n'est pas la partie la plus intéressante, ce qui est plus intéressant est la liste du type MIME existant ici ou le plus utilisé ici .
dans ce code, ils utilisent l'attribut type
et y exécutent un regexp (voir match et RegExp pour plus d'informations). Leur regexp dit que c'est ok si le type contient image
.
pour faire votre propre sélecteur, vous devrez combiner ce qui précède. (une partie de l'exemple utilise = = = au lieu de correspondre parce que le type mime est le type entier) Par exemple, le contrôle suivant est possible:
- document (pas de format pdf, odt, ce type ainsi par exemple) :
input.files[0].type==='application/pdf'
- audio:
input.files[0].type.match('audio.*')
- vidéo :
input.files[0].type.match('video.*')
et ainsi de suite.
après cela, vous pouvez utiliser un sélecteur sur l'attribut name
du fichier si vous souhaitez faire correspondre seulement une certaine extension (par exemple pour vérifier entre différents types de document, vous pouvez regarder si c'est un .pdf, un .odt ...) en utilisant par exemple input.files[0].name.match('\.pdf')
.
Mais imho qui n'est pas conseillé, car l'utilisateur pourrait facilement jouer avec cela (suppression ou de le modifier).
Ce qui pourrait aider:
file.mimetype.match('text.*|image.*|application.*')
Ce vérifie pour tous les types mime acceptables