138 votes

Comment filtrer la boîte de dialogue input type="file" par type de fichier spécifique?

Je veux limiter le navigateur aux fichiers JPG lorsque je clique sur le bouton de parcourir du .

Est-il possible de parcourir des types de fichiers spécifiques?

1 votes

Quel type de bouton de téléchargement ? Entrée de fichier HTML ? Flash ? Autre chose ?

0 votes

Où se trouve votre fichier ? Sur votre machine locale ou sur le web ?

0 votes

162voto

Vegard Points 1263

Cela donnera le filtre correct (personnalisé) lorsque la boîte de dialogue de fichier est affichée :

0 votes

@jpoppe c'est une petite faute de frappe. Vous pouvez en fait modifier la réponse et la corriger si vous le souhaitez. :)

0 votes

@jpoppe, merci de l'avoir signalé, cela a désormais été corrigé :)

1 votes

Ha! Je ne savais pas que vous pouviez réellement spécifier l'extension. Je pensais seulement que cela devait être le type MIME. Mais soyez attentif à ceci : caniuse.com/#feat=input-file-accept, en particulier l'annotation numéro 1

104voto

JB Nizet Points 250258

Consultez http://www.w3schools.com/tags/att_input_accept.asp:

L'attribut accept est pris en charge par tous les principaux navigateurs, sauf Internet Explorer et Safari. Définition et utilisation

L'attribut accept spécifie les types de fichiers que le serveur accepte (qui peuvent être soumis via un téléchargement de fichier).

Note : L'attribut accept ne peut être utilisé qu'avec .

Astuce : N'utilisez pas cet attribut comme outil de validation. Les téléchargements de fichiers doivent être validés sur le serveur.

Syntaxe

Astuce : Pour spécifier plus d'une valeur, séparez les valeurs par une virgule (par exemple .

2 votes

Merci.. Mais comment le réparer pour IE ??

10 votes

Vous ne le réparez pas. C'est quelque chose sur lequel vous n'avez aucun contrôle. Il suffit de préciser dans l'interface utilisateur que ce que l'utilisateur doit sélectionner est une image, et de le valider côté serveur. C'est ce que signifie "Les téléversements de fichiers doivent être validés côté serveur".

0 votes

Cela rend mp4 non sélectionnable dans Safari. Vous devez également spécifier video/mp4.

1voto

UserAK47 Points 39

.

$('#btnUpload').click(function () {
    var uploadpath = $('#FileUploadExcel').val();
    var fileExtension = uploadpath.substring(uploadpath.lastIndexOf(".") + 1, uploadpath.length);

    if ($('#FileUploadExcel').val().length == 0) {
        // écrire un message d'erreur
        return false;
    }

    if (fileExtension == "xls" || fileExtension == "xlsx") {
        // écrire du code pour le succès
    }
    else {
        // code d'erreur - sélectionnez uniquement des fichiers Excel
        return false;
    }

});

0 votes

@slavoo ~ en utilisant certainement des entrées ASP, l'OP devrait être en cours d'exécution ASP? Pourquoi l'ajout dans votre édition? La réponse de UserAK47 ne les nécessite pas.

1 votes

@pebbl Ouvrez les révisions de cet article et passez à markdown côte à côte sur la révision n ° 2, vous pouvez voir que les entrées asp étaient ici avant ma modification, mais ne sont pas visibles, car elles sont en dehors du formatage du code. J'ai corrigé uniquement le format.

1 votes

@slavoo ~ ah ça semble logique... sinon j'aurais pensé que tu es légèrement bizarre :) merci pour la clarification.

1voto

Sebastian Points 845

Ajoutez un attribut personnalisé à et lisez les noms de fichiers en javascript qui correspondent à l'extension fournie par l'attribut file-accept. Cela sera un peu bidon, car un fichier texte avec l'une des extensions ci-dessus sera erronément détecté comme une image.

0voto

John Points 2717

Vous pouvez utiliser l'attribut accept avec le . Cela ne fonctionne pas dans IE et Safari.

En fonction de l'échelle et de l'extensibilité de votre projet, vous pourriez utiliser Struts. Struts offre deux façons de limiter le type de fichier téléversé, de manière déclarative et de manière programmatique.

Pour plus d'informations: http://struts.apache.org/2.0.14/docs/file-upload.html#FileUpload-FileTypes

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