Мне нужен простой способ разрешить пользователям загружать сразу несколько файлов (т.е. мне нужно разрешить пользователю загружать папку). Я не хочу перекладывать бремя застегивания на пользователя.
Я бы предпочел избегать Flash или вариантов, если это возможно. Я ищу прямое решение для javascript / HTML, если это возможно. Обратите внимание, это исключает ответы на: Какая лучшая клиентская библиотека браузера для загрузки нескольких файлов через http?.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы избегаете Flash (и, предположительно, Java?), Решение только для JS / HTML по-прежнему требует однофайловых input, но по сути вы присоединяете событие onchange к вашему input, добавляя новый input в DOM всякий раз, когда выбирается файл.
Можно ли получить список файлов в определенной папке и автоматически передать его в элемент управления вводом?
Я ответил собственным вопросом из комментариев: codeproject.com/KB/scripting/search_in_files.aspx
Хотя проблема со ссылкой, которую я нашел, заключается в том, что для нее требуется ActiveX. И в этот момент я мог бы также использовать flash: - /
Это не чистое решение js / html. Как отметил EndangeredMassa, это невозможно. Фактически, эта идея является решением только для IE / Windows. Не рекомендую, но может сработать.
Итак, все заявления об отказе от ответственности ...
Много лет и несколько работодателей назад мы делали некоторые вещи на стороне клиента, которые создавали экземпляр FileSystemObject. Он будет перебирать каждый из файлов и передавать их на сервер по одному. Не могу вспомнить, как мы это сделали: o (
В любом случае это обычно означало, что клиентскому ящику необходимо было добавить сайт в список доверенных сайтов и предоставить доверенным сайтам набор разрешений, которые отключены (по очень веским причинам). Такие вещи, как возможность инициализации и скриптования элементов управления ActiveX, не помечены как безопасные. Такие вещи.
Я знаю, что это не идеальный ответ, но он может указать вам правильное направление.
FTP? А если нет, оберните Java-апплет, ActiveX или что угодно.
В противном случае, хотя вам и не нужна вспышка, SWFUpload - это здорово, вы можете пересмотреть его как достойный вариант.
Вы не сможете сделать это с помощью только HTML и Javascript. Я бы рекомендовал попробовать Необычная загрузка, плагин MooTools для загрузки нескольких файлов. Он использует смесь JavaScript и Flash, но постепенно ухудшается. Он работает со всеми основными браузерами, включая IE6, и есть также версия, совместимая с Flash 10, доступная для загрузки (хотя демо еще не обновлено).
Обновление (2012-11-26):
Загрузка Множественный файл возможна с помощью загрузчиков файлов валумы или Blueimp.
Для загрузок рекурсивный каталог ваше лучшее решение - использовать Новый API загрузки папок в Chrome 11. Кажется, он также работает в Firefox, если вы используете префикс поставщика.
Почему нельзя загружать как отдельные файлы, так и папки, если у вас установлен атрибут webkitdirectory? Странно, что это либо / или вещь ... Кроме того, могу ли я загрузить только один каталог или я могу выбрать пару с множеством атрибутов?
Это старый вопрос, и принятый ответ уже устарел. См. Мой ответ на этот вопрос о нескольких рабочих решениях stackoverflow.com/questions/42239663/…
Здесь - чистое решение JS с использованием библиотеки ExtJS
Это работает для нескольких файлов, но не для папок. См. stackoverflow.com/a/13486123/486547
Что вы имеете в виду под «папкой для загрузки»? В любом случае в папке будут файлы.
Вы можете использовать основанную на стандартах технологию для загрузки нескольких файлов с помощью окна загрузки файлов (например, imgur.com/Cl1RB), но вы не можете выбрать папку (imgur.com/2dZtS) и рекурсивно загрузить ее содержимое. Для этого вам нужно использовать проприетарный материал -moz / -webkit. Надеюсь, это поможет!
Загрузка Множественный файл возможна с помощью загрузчиков файлов валумы или Blueimp.
Для загрузок рекурсивный каталог ваши возможности более ограничены:
Лучшее решение - использовать Новый API загрузки папок Chrome 11. Кажется, он также работает в Firefox, если вы используете префикс поставщика.
Также возможен кроссбраузерность с Java-апплет. Однако процент людей с установленной JRE в наши дни стал довольно низким (<70%).
Благодаря тому, что Firefox 42 и Edge реализовали новый предложение по загрузке каталога, мы, наконец, сможем выполнять кроссбраузерную загрузку каталогов. API-интерфейсы настолько неприятны, что вы можете проверить мою оболочку аппи.
Диодей: Вы должны опубликовать это как ответ.