42 votes

Filtrer les extensions dans le formulaire de téléchargement HTML

J'ai un formulaire de téléchargement HTML simple, et je veux spécifier une extension par défaut ("*.drp" par exemple). J'ai lu que la manière de le faire est à travers l'attribut ACCEPT de la balise input, mais je ne sais pas exactement comment faire.

Télécharger Fichier DRP :

Éditer Je sais que la validation est possible en utilisant javascript, mais j'aimerais que l'utilisateur ne voit que les fichiers ".drp" dans sa boîte de dialogue. De plus, je ne me soucie pas vraiment de la validation côté serveur dans cette application.

35voto

ParaMeterz Points 1074

Pour des formats spécifiques comme le vôtre ".drp". Vous pouvez directement le passer dans accept=".drp", cela fonctionnera pour cela.

Mais sans "*"

27voto

Nazri Points 239

J'utilise javascript pour vérifier l'extension du fichier. Voici mon code :

HTML

.. ..

javascript

function check_file(){
                str=document.getElementById('fileToUpload').value.toUpperCase();
        suffix=".JPG";
        suffix2=".JPEG";
        if(str.indexOf(suffix, str.length - suffix.length) == -1||
                       str.indexOf(suffix2, str.length - suffix2.length) == -1){
        alert('Type de fichier non autorisé,\nFichiers autorisés : *.jpg, *.jpeg');
            document.getElementById('fileToUpload').value='';
        }
    }

10voto

Brian Cline Points 8904

L'attribut accept attend des types MIME, pas des masques de fichiers. Par exemple, pour accepter les images PNG, vous aurez besoin de accept="image/png". Vous devrez peut-être découvrir quel type MIME le navigateur considère comme étant celui de votre type de fichier, et l'utiliser en conséquence. Cependant, étant donné qu'un fichier 'drp' ne semble pas être standard, vous pourriez devoir accepter un type MIME générique.

De plus, il semble que la plupart des navigateurs n'honorent pas cet attribut.

La meilleure façon de filtrer les téléversements de fichiers sera côté serveur. Cela peut être contraignant car l'utilisateur occasionnel pourrait perdre du temps à téléverser un fichier pour finalement réaliser qu'ils ont choisi le mauvais, mais au moins vous aurez une forme d'intégrité des données.

Alternativement, vous pouvez choisir de faire une vérification rapide avec JavaScript avant que le formulaire ne soit soumis. Vérifiez simplement l'extension de la valeur du champ de fichier pour voir s'il s'agit de ".drp". Cela sera probablement bien plus supporté que l'attribut accept.

1voto

Diodeus Points 67946

Vous pouvez le faire en utilisant du javascript. Récupérez la valeur du champ de formulaire dans votre fonction de soumission, parsez l'extension.

Vous pouvez commencer avec quelque chose comme ceci :

function val() {
    alert(document.someform.file1.value)
}

Je suis d'accord avec alexmac - faites-le également côté serveur.

1voto

alexmac Points 2625

Je n'utiliserais pas cet attribut car la plupart des navigateurs l'ignorent comme le souligne CMS.

N'hésitez pas à utiliser la validation côté client, mais uniquement en conjonction avec le côté serveur. Toute validation côté client peut être contournée.

Légèrement hors sujet, mais certaines personnes vérifient le type de contenu pour valider le fichier téléchargé. Vous devez être vigilant à ce sujet car un attaquant peut facilement le modifier et télécharger par exemple un fichier php. Voir l'exemple sur: http://www.scanit.be/uploads/php-file-upload.pdf

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X