2010-05-11 3 views
43

Как создать список выбора каталога на странице html.
Если я использую элемент входного файла, я могу выбрать только файл, но вместо этого мне нужно выбрать каталог.
Мне нужно сделать это, потому что пользователь должен выбрать правильный путь внутри своего компьютера.
Любые решения?Directory Chooser в HTML-странице

+2

Теперь это возможно с HTML5, по крайней мере, в хром: http: // stackoverflow.com/questions/24718769/html5-javascript-how-to-get-the-selected-folder-name – mtyson

ответ

21

Невозможно выполнить чистый HTML/JavaScript по соображениям безопасности.

Выбор файла для загрузки - это лучшее, что вы можете сделать, и даже тогда вы не получите его полный исходный путь в современных браузерах.

Возможно, вы сможете скомпоновать что-то вместе с использованием Java или Flash (например, используя SWFUpload), но это большая работа и дополнительные проблемы совместимости.

Еще одна мысль - открыть iframe, показывая привод пользователя C: (или что-то еще), но даже если это возможно в наши дни (может быть заблокировано по соображениям безопасности, не пробовал в течение длительного времени), это будет невозможно для вашей сети сайт для связи с iframe (опять же по соображениям безопасности).

Для чего это необходимо?

+0

Мне нужен он для выбора пути внутри компьютера, а не для загрузки. Я использую этот путь для сохранения файла, но с функцией JSP. – enfix

+2

@enfix Как вы собираетесь сохранять файл с JSP-сервера в определенный путь на локальном компьютере пользователя? Я не понимаю. Можете ли вы изменить свой вопрос, чтобы уточнить? –

+0

Мне нужно получить путь, по которому пользователь хочет сохранять файлы, но файлы сохраняются с помощью java-функции callend внутри страницы JSP. Эта функция нуждается в пути для сохранения файлов. Это все. Я сохраняю несколько файлов, мне нужно создавать папки и другие вещи с помощью этой java-функции. – enfix

2

Сценарии неизбежны.

Это не предусмотрено из-за угрозы безопасности. <input type='file' /> ближе всего, но не то, что вы ищете.

Оформить заказ this example, в котором используется Javascript для достижения желаемого.

Если ОС является окном, вы можете использовать VB scripts для доступа к основным файлам управления для поиска папки.

46

Попробуйте это, я думаю, что это будет работать для вас:

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

Вы можете найти демо это в https://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3, и если вам нужна дополнительная информация вы можете найти его here.

+0

У меня создалось впечатление, что ваше предложение работает для загрузки папки, не получая ее пути. –

+2

Это работает в firefox, но не в хроме. –

+0

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory для документации. Он называется «нестандартным». И он эффективно загружает файлы, содержащиеся рекурсивно (?), Также выставляя имя папки. Это будет сделано в большинстве случаев. – Blauhirn

1

Если вы являетесь сервером и пользователем (например, вы создаете приложение, которое работает через браузер, и вам нужно выбрать папку), попробуйте позвонить JFileChooser с сервера, когда в браузере будет нажата какая-либо кнопка.

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

Этот код отрезала от here

0

Я сделал работу вокруг. У меня было скрытое текстовое поле для хранения значения. Затем, на form_onsubmit, Я скопировал значение пути, за меньшее имя файла в скрытую папку. Затем установите для поля fileInput значение "". Таким образом, файл не загружается. Я не помню события управления файловой системой. Может быть, обмен. Прошло много времени. Если есть значение, я разбираю имя файла и помещаю папку обратно в поле. Конечно, вы должны подтвердить, что файл является допустимым файлом. Это даст вам папку рабочих станций клиентов.
Однако, если вы хотите отображать пути к серверу, для этого требуется совершенно другой подход к кодированию.

+0

Пользователю нужно будет обучиться выбору любого файла. Это меланхолично. Но, работает в крайнем случае. Add and onchange = "parseFilePath()" в элемент управления FileUpload. function parseFileUploadPath() { var upl = document.getElementById ("<% = this.FileUpload1.ClientID%>"); if (upl.value! = "") { var pos = upl.value.lastIndexOf ("\\") document.getElementById ("<% = this.TextBox1.ClientID%>"). Value = upl. value.substr (0, pos) } } – user8004777

+0

К сожалению, Более полный HTML. – user8004777