web-dev-qa-db-fra.com

Comment obtenir un répertoire de dossiers à partir du type d'entrée HTML "fichier" ou de toute autre manière?

J'ai donc une entrée de formulaire de base avec le type "file" Cependant, je souhaite que l’utilisateur puisse sélectionner un dossier et non un fichier.

Comment puis-je obtenir cette entrée pour sélectionner un dossier et non un fichier, ou existe-t-il un autre moyen de le faire?

56
Ben

Je suis tombé sur cette page également, et ensuite découvert que cela est possible avec juste du javascript (pas de plugins comme ActiveX ou Flash), mais juste en chrome:

https://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF

Fondamentalement, ils ont ajouté la prise en charge d'un nouvel attribut sur l'élément d'entrée de fichier "webkitdirectory". Vous pouvez l'utiliser comme ceci:

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

Il vous permet de sélectionner des répertoires. L'attribut multiple constitue un bon secours pour les navigateurs prenant en charge la sélection de plusieurs fichiers mais pas la sélection de répertoires.

Lorsque vous sélectionnez un répertoire, les fichiers sont disponibles via l'objet dom pour le contrôle (document.getElementById ('ctrl')), exactement comme ils le sont avec l'attribut multiple. Les navigateurs ajoutent tous les fichiers du répertoire sélectionné à cette liste de manière récursive.

Vous pouvez déjà ajouter l'attribut de répertoire au cas où cela serait normalisé à un moment donné (impossible de trouver une information à ce sujet)

60
bwindels

Vous envisagez probablement d'utiliser un contrôle flash/silverlight/activeX. Le <input type="file" /> le contrôle ne gère pas ça.

Si cela ne vous dérange pas que l'utilisateur sélectionne un fichier pour obtenir son répertoire, vous pourrez peut-être lier l'événement change de ce contrôle, puis supprimer la partie du nom de fichier et enregistrer le chemin quelque part - mais c'est à peu près tout. aussi bon qu'il obtient.

N'oubliez pas que les pages Web sont conçues pour interagir avec les serveurs. Rien sur la fourniture d'un répertoire local à un serveur distant n'est "typique" (un serveur ne peut y accéder, alors pourquoi le demander?); Cependant, les fichiers sont un moyen de transmettre sélectivement des informations.

2
Brad Christie

Même si c'est une vieille question, cela peut aider quelqu'un.

Nous pouvons choisir plusieurs fichiers en recherchant un fichier en utilisant "multiple"

<input type="file" name="datafile" size="40"  multiple> 
2
Sai