Avec HTML, comment limiter les types de fichiers pouvant être téléchargés?
Pour faciliter l'expérience utilisateur, je souhaite limiter les téléchargements de fichiers aux images (jpeg, gif, png).
<form method="post" action="..." enctype="multipart/form-data">
<label for="image">Photo</label>
<input name="image" type="file" />
</form>
html
image
upload
file-upload
JacobT
la source
la source
Réponses:
HTML5 dit
<input type="file" accept="image/*">
. Bien sûr, ne faites jamais confiance à la validation côté client: vérifiez toujours à nouveau côté serveur ...la source
L'entrée de fichier HTML5 a un attribut d'acceptation et également un attribut multiple. En utilisant plusieurs attributs, vous pouvez télécharger plusieurs images dans une instance.
Vous pouvez également limiter plusieurs types de mime.
et une autre façon de vérifier le type mime à l'aide d'un objet fichier.
l'objet fichier 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.
la source
image/*|audio/*|video/*
ne fonctionne pas pour moi, il devrait être séparé par des virgules, il semble:image/*,video/mp4,.txt
Édité
Si les choses étaient comme elles DEVRAIENT être, vous pouvez le faire via l'attribut "Accepter".
http://www.webmasterworld.com/forum21/6310.htm
Cependant, les navigateurs l'ignorent à peu près, ce n'est donc pas pertinent. La réponse courte est, je ne pense pas qu'il existe un moyen de le faire en HTML. Vous devrez plutôt le vérifier côté serveur.
Le post plus ancien suivant contient des informations qui pourraient vous aider avec des alternatives.
Attribut 'accepter' d'entrée de fichier - est-ce utile?
la source
Voici le code HTML pour le téléchargement d'images. Par défaut, il affichera les fichiers image uniquement dans la fenêtre de navigation car nous l'avons mis
accept="image/*"
. Mais nous pouvons toujours le changer à partir du menu déroulant et il affichera tous les fichiers. Ainsi, la partie Javascript valide si le fichier sélectionné est ou non une image réelle.Ici, lors de l'événement de changement, nous vérifions d'abord la taille de l'image. Et dans la deuxième
if
condition, nous vérifions s'il s'agit ou non d'un fichier image.this.files[0].type.indexOf("image")
le sera-1
s'il ne s'agit pas d'un fichier image.la source
Maintenant dans la partie html
ce code vérifiera si le fichier téléchargé est un fichier jpg ou non et restreint le téléchargement d'autres types
la source
Vous ne pouvez le faire de manière sécurisée que côté serveur. L'utilisation de l'attribut "accept" est une bonne chose, mais doit également être validée côté serveur afin que les utilisateurs ne puissent pas cURL vers votre script sans cette limitation.
Je vous suggère de: supprimer tout fichier non image, avertir l'utilisateur et réafficher le formulaire.
la source
Finalement, le filtre affiché dans la fenêtre Parcourir est défini par le navigateur. Vous pouvez spécifier tous les filtres souhaités dans l'attribut Accepter, mais vous n'avez aucune garantie que le navigateur de votre utilisateur y adhère.
Votre meilleur pari est de faire une sorte de filtrage dans le back-end sur le serveur.
la source
Récupérez un projet appelé Uploadify. http://www.uploadify.com/
C'est un téléchargeur de fichiers basé sur Flash + jQuery. Cela utilise la boîte de dialogue de sélection de fichiers de Flash, qui vous permet de filtrer les types de fichiers, de sélectionner plusieurs fichiers en même temps, etc.
la source