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

J’ai un simple formulaire de téléchargement HTML et je souhaite spécifier une extension par défaut (“* .drp” par exemple). J’ai lu que la façon de faire est d’utiliser l’atsortingbut ACCEPT de la balise d’entrée, mais je ne sais pas exactement comment.

Upload DRP File:

Modifier 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 dialog contextuelle. En outre, je ne me soucie pas beaucoup de la validation côté serveur dans cette application.

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

Mais sans ” * ”

  

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('File type not allowed,\nAllowed file: *.jpg,*.jpeg'); document.getElementById('fileToUpload').value=''; } } 

L’atsortingbut accept attend les types MIME, pas les masques de fichiers. Par exemple, pour accepter des images PNG, vous devez accepter accept = “image / png”. Vous devrez peut-être savoir quel type MIME le navigateur considère comme étant votre type de fichier et l’utiliser en conséquence. Cependant, comme un fichier ‘drp’ ne semble pas standard, vous devrez peut- être accepter un type MIME générique.

En outre, il semble que la plupart des navigateurs ne respectent pas cet atsortingbut.

La meilleure façon de filtrer les téléchargements de fichiers sera sur le serveur. Cela est gênant car l’utilisateur occasionnel peut perdre du temps à télécharger un fichier uniquement pour apprendre qu’il a choisi le mauvais, mais au moins vous aurez une forme d’intégrité des données.

Vous pouvez également choisir de faire une vérification rapide avec JavaScript avant de soumettre le formulaire. Vérifiez simplement l’extension de la valeur du champ du fichier pour voir si c’est “.drp”. Cela va probablement être beaucoup plus supporté que l’atsortingbut accept.

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

Bien sûr, utilisez la validation côté client, mais uniquement en association avec le côté serveur. Toute validation côté client peut être obtenue.

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

Vous pouvez le faire en utilisant javascript. Saisissez la valeur du champ de formulaire dans votre fonction d’envoi, parsingz l’extension.

Vous pouvez commencer avec quelque chose comme ceci:

 

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

L’atsortingbut accept spécifie une liste de types de contenu (types MIME) séparés par des virgules que la cible du formulaire traitera correctement. Malheureusement, cet atsortingbut est ignoré par tous les principaux navigateurs, ce qui n’affecte en rien la boîte de dialog du navigateur.

Une autre solution avec quelques lignes

 function checkFile(i){ i = i.substr(i.length - 4, i.length).toLowerCase(); i = i.replace('.',''); switch(i){ case 'jpg': case 'jpeg': case 'png': case 'gif': // do OK stuff break; default: // do error stuff break; } }