Restriction type de fichier "input type=file&

Résolu
fabio94 -  
 xav -
Bonjour ,
Je souhaiterai pouvoir, dans ma balise HTML <input type="file">, restreindre le type de fichier selectionnable.

Par default il y a 3 choix qui sont:
-tous les fichiers(*.*)
-Images (*.gif,*.jpg)
-HTML (*.htm,*.html)

Pour ma part, je ne souhaiterais ne pouvoir rendre sélectionnable que les fichiers de type word.

En vous remerciant d'avance des réponse que vous pourrez m'apporter.
Configuration: P4 1.6Ghz 384Mo RAM
20Go

4 réponses

  1. poof65
     
    Exemple
    <input type="file" id="fichier" />
    if (document.getElementById('fichier').value.split('.').reverse()[0] == 'doc') alert('ok');

    Bon alors le code prend le nom du fichier (et le chemin) dans le champ file, découpe le tout avec le caractère . (point), le met dans un tableau, l'inverse puis prend le premier élément (l'extension du fichier) et teste si c'est doc.
    5
    1. Darshu Messages postés 303 Statut Membre 64
       
      Bon bah c'était possible ^^

      Merci poof, j'ai appris un truc comme ça au moins ;) Et c'est vachement plus simple que de faire un test avec PHP !
      0
      1. poof65 > Darshu Messages postés 303 Statut Membre
         
        Attention, il faut TOUJOURS faire le test du côté de php par sécurité car le javascript peut être désactivé sur le navigateur.
        0
    2. xav
       
      Ca ne teste pas vraiment le type de fichier... Il faut tester le MIME type
      0
  2. nicolasbonnici
     
    Bonjour à tous,

    Attention ne pas faire confiance à Javascript pour vérifier le type d'un fichier et surtout lors de la vérification coté serveur ne pas faire confiance à l'extension (.jpg, .gif etc...) du fichier mais plutôt tester le MIME type du fichier directement (selon votre version de PHP ça diffère) c'est le seul moyen de vraiment sécuriser ce type d'upload. Pour pousser le vice n'autorisez pas non plus le format gif qui peut contenir des backdoors.

    Nico
    3
  3. Darshu Messages postés 303 Statut Membre 64
     
    Salut.

    il y a peut-être plus simple, mais pour ma part, j'autoriserai tous les fichiers (*.*), et il y aurai une page intermédiaire en PHP qui récupère le chemin du fichier (si tu as <FORM METHOD="POST" ACTION="traitement.php"> et <INPUT TYPE="file" NAME="fichier">, dans traitement.php tu as $fic=$_POST['fichier']; Il te ne reste plus qu'à tester si '.doc' est dans $fic, si oui alors tu valides l'envoi par le formulaire, si non tu retournes à la page précédente en affichant un message d'erreur du type "Le fichier sélectionné n'est pas un .doc !".

    Ca doit également être possible à faire en JavaScript avec un OnChange(), mais je ne sais pas comment rechercher la chaîne de caractère '.doc' dans une chaîne.
    2
  4. fabio94
     
    merci beaucoup pour vos réponses !
    1