JS et le type.match en tant que type mime du fichier - besoin de conseils
Aujourd'hui, j'ai fait face à une chose intéressante que FF Fichier API et des fichiers séparés par leurs types. OK, voici un petit extrait que
if (!input.files[0].type.match('image.*')) {
window.alert("Select image please");
return;
}
il contrôle l'image en cours de lecture seulement. Mais qu'en est fichiers doc et pdf par exemple? Je ne pouvais pas trouver d'exemples utiles pour ce film, alors j'espère que vous pouvez partager quelques extraits. La chose que je me suis intéressé à la détection de différents types de fichiers, mais comment puis-je contrôler les différents types de fichiers avec JS et son type.match lié?
Ici est le code de base
Tout commentaire est apprécié 🙂
- Êtes-vous sûr que cela fonctionne? L'attribut type est censé être
file
pas? Et le type de votre référence est leaccept
l'attribut reference.sitepoint.com/html/input/accept qui peut prendre n'importe quel type MIME valeur. - Oui, il fonctionne, et permet DE ne PAS obtenir les fichiers à l'exception uniquement des images. Mais je veux voir comment faire la même chose pour un document ou un fichier pdf?
- Emm... Merci pour le lien. l' ("text/html", "image/x-rvb", ou "application/java") peut-être que c'est le point. Je ne suis pas assez sûr est-il l'accepter attribut de fichier parce que le JS est l'aide de l'image.* pour ses si de l'opérateur 🙁 j'ai Donc besoin de votre avis que dois-je regarder?
- Eh bien, ce que je comprends,
.match(image.*)
correspond à toutes les chaînes qui est l'image de[quelque chose]. Mais pour m'aider à reproduire votre cas, je vais avoir besoin de le html/js fournir de l'objet d'entrée. - OK, j'ai juste édité à ma question. Regardez s'il vous plaît
Vous devez vous connecter pour publier un commentaire.
Donc l'idée de base est que ce code utilise les Objets de Fichier, pour plus d'informations sur eux, voir :
Comme spécifié par w3, le
type
attribut de l'objet Fichier est un type MIME. Ceci est défini dans le 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 de l'existant, type MIME ici ou le plus utilisé ici.Dans ce code, ils utilisent le
type
attribut et d'exécuter une regexp sur elle (voir match et RegExp pour plus d'info). Leur regexp dit que c'est ok si le type contientimage
.Faire votre propre sélecteur, vous devrez combiner les ci-dessus. (quelques exemple d'utilisation === au lieu de match parce que le type mime est l'ensemble de type)
Par exemple, le cocher suivantes sont possibles:
input.files[0].type==='application/pdf'
input.files[0].type.match('audio.*')
input.files[0].type.match('video.*')
Et ainsi de suite.
Après cela, vous pouvez utiliser un sélecteur sur le
name
de l'attribut de fichier si vous souhaitez associer uniquement à certains extension (par exemple pour vérifier entre les différents types de document, vous pouvez regarder si c'est un .pdf, un .odt ...) en utilisant par exempleinput.files[0].name.match('\.pdf')
.Mais à mon humble avis ce n'est pas conseillé, car l'utilisateur pourrait facilement jouer avec (suppression ou la modification d'entre eux).
file.type
d'un échantillon .fichier mkv que j'ai est une chaîne vide.Ce qui pourrait aider:
Ce vérifie pour tous les types mime acceptables