web-dev-qa-db-fra.com

Sélecteur d'annuaire dans la page HTML

Comment créer un sélecteur de répertoire dans une page html?.
Si j'utilise un élément de fichier d'entrée, je ne peux sélectionner qu'un fichier, mais je dois plutôt sélectionner un répertoire.
Je dois effectuer cette opération parce que l’utilisateur doit sélectionner un chemin approprié dans son ordinateur.
Des solutions?

56
enfix

Ne peut être fait en HTML/JavaScript pur pour des raisons de sécurité.

Sélectionner un fichier à télécharger est ce que vous pouvez faire de mieux. Même dans ce cas, vous ne retrouverez pas son chemin complet d'origine dans les navigateurs modernes.

Vous pouvez peut-être assembler quelque chose en utilisant Java ou Flash (par exemple, en utilisant SWFUpload comme base)), mais cela demande beaucoup de travail et entraîne des problèmes de compatibilité supplémentaires.

Une autre idée serait d’ouvrir un iframe montrant le lecteur C: De l’utilisateur (ou autre chose), mais même si cela est possible de nos jours (pourrait être bloqué pour des raisons de sécurité, n’a pas été essayé depuis longtemps), il Il sera impossible pour votre site Web de communiquer avec l’iframe (toujours pour des raisons de sécurité).

Pourquoi avez-vous besoin de cela?

28
Pekka 웃

Essayez ceci, je pense que cela fonctionnera pour vous:

<input type="file" webkitdirectory directory multiple/>

Vous pouvez trouver la démo de ceci à https://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF , et si vous avez besoin d'informations supplémentaires, vous pouvez le trouver ici .

61
Raveendra007

Si vous êtes le serveur et l'utilisateur (par exemple, vous créez une application qui fonctionne via un navigateur et vous devez choisir un dossier), essayez d'appeler JFileChooser à partir du serveur lorsque vous cliquez sur un bouton dans le navigateur.

JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new Java.io.File("."));
chooser.setDialogTitle("select folder");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setAcceptAllFileFilterUsed(false);

Ce code est extrait de ici

3
Levon

L'écriture est inévitable.

Ce n'est pas fourni en raison du risque de sécurité. <input type='file' /> est le plus proche, mais pas ce que vous recherchez.

Commander cet exemple qui utilise Javascript pour réaliser ce que vous voulez.

Si le système d'exploitation est Windows, vous pouvez utiliser scripts VB pour accéder aux fichiers de contrôle principaux afin de rechercher un dossier.

2
KMån

J'ai fait un travail autour. J'ai eu une zone de texte cachée pour contenir la valeur. Ensuite, sur form_onsubmit, j’ai copié la valeur du chemin, moins le nom du fichier dans le dossier caché. Ensuite, définissez la zone fileInput sur "". De cette façon, aucun fichier n'est chargé. Je ne me souviens pas de l'événement du contrôle fileUpload. Peut-être en échange. Cela fait longtemps. S'il y a une valeur, j'analyse le nom du fichier et replace le dossier dans la boîte. Bien sûr, vous devez valider le fichier en tant que fichier valide. Cela vous donnerait le dossier du poste de travail des clients.
Toutefois, si vous souhaitez refléter les chemins de serveur, cela nécessite une approche de codage totalement différente.

1
user8004777