HTML: Comment limiter l'upload de fichier de n'être que des images?
Avec HTML, comment faire pour limiter ce genre de types de fichiers peuvent être téléchargés?
La simplicité de l'expérience utilisateur, je veux limiter les téléchargements de fichiers à être seulement des images (jpeg, gif, png).
<form method="post" action="..." enctype="multipart/form-data">
<label for="image">Photo</label>
<input name="image" type="file" />
</form>
- De toute évidence, à properply sécurisé - je vérifier sur le backend/côté serveur. Mais tout ce que je suis à la recherche d'un moyen de simplement l'expérience de l'utilisateur, de sorte que quand on clique sur "parcourir" pour trouver l'image qu'ils veulent télécharger, ils ne sont pas le fait de voir tous ces documents word, etc qui ne sont pas applicables à télécharger
- Je ne sais pas que vous pouvez définir un masque de fichier. Je n'ai jamais vu qu'il fait avec succès.
Vous devez vous connecter pour publier un commentaire.
HTML5 dit
<input type="file" accept="image/*">
. Bien sûr, ne faites jamais confiance à la validation côté client: Toujours vérifier de nouveau sur le côté serveur...accept="application/pdf"
HTML5 Fichier d'entrée a accepter attribut et aussi des attributs multiples. En utilisant l'attribut multiple, vous pouvez télécharger plusieurs images dans une instance.
Vous pouvez également limiter le nombre de types mime.
et une autre façon de vérifier le type mime à l'aide du fichier de l'objet.
fichier objet vous donne le nom,la taille et le type.
Vous pouvez également restreindre l'utilisateur pour certains types de fichiers à télécharger par le code ci-dessus.
image/*|audio/*|video/*
ne fonctionne pas pour moi, il devrait être séparées par des virgules, il semble:image/*,video/mp4,.txt
Édité
Si les choses étaient comme elles DEVRAIENT l'être, vous pouvez le faire via l'option "Accepter" attribut.
http://www.webmasterworld.com/forum21/6310.htm
Cependant, les navigateurs assez beaucoup ignorent, c'est donc irrelavant. La réponse courte est, je ne pense pas qu'il existe un moyen de le faire en HTML. Vous devriez vérifier côté serveur à la place.
Suivantes vieux poste a quelques informations qui pourraient vous aider avec des solutions de rechange.
Le fichier d'entrée "accepter" l'attribut est-il utile?
Voici le code HTML pour l'upload d'images. Par défaut, il va afficher l'image uniquement les fichiers dans la fenêtre de navigation parce que nous avons mis
accept="image/*"
. Mais on peut toujours le modifier à partir de la liste déroulante et on vous montrera tous les fichiers. De sorte que la partie Javascript valide ou non le fichier sélectionné est une image réelle.Ici sur l'événement de changement, on vérifie d'abord la taille de l'image. Et dans la deuxième
if
condition que nous avons vérifier si oui ou non il s'agit d'un fichier image.this.files[0].type.indexOf("image")
sera-1
si ce n'est pas un fichier image.Vous ne pouvez le faire en toute sécurité sur le côté serveur. À l'aide de la "accepter" attribut est bon, mais doivent également être validées sur le côté serveur de peur que les utilisateurs soient en mesure de roulage à votre script sans cette limitation.
Je suggère que vous: jetez tout non-fichier d'image, d'en avertir l'utilisateur, et réafficher le formulaire.
En fin de compte, le filtre qui est affiché dans la fenêtre de navigation est définie par le navigateur. Vous pouvez spécifier tous les filtres que vous voulez dans l'Accepter attribut, mais vous n'avez aucune garantie que votre navigateur de l'utilisateur va y adhérer.
Votre meilleur pari est de faire une sorte de filtrage dans le back-end sur le serveur.
La caisse un projet appelé Uploadify. http://www.uploadify.com/
C'est un Flash + jQuery en fonction de fichier uploader. Il utilise le Flash de dialogue de sélection de fichier, ce qui vous donne la possibilité de filtrer les types de fichier, sélectionnez plusieurs fichiers en même temps, etc.
Maintenant dans la partie html
ce code permet de vérifier si le fichier téléchargé est un fichier jpg ou pas et limite le chargement d'autres types de