Каков наилучший способ загрузить папку на веб-сайт?
-
05-07-2019 - |
Вопрос
Мне нужен простой способ разрешить пользователям загружать несколько файлов одновременно (т. Е. мне нужно разрешить пользователю загружать папку).Я не хочу возлагать бремя архивирования на пользователя.
Я бы предпочел избегать Flash или других вариантов, если это возможно. Я ищу прямое решение на javascript / HTML, если это возможно.Пожалуйста, обратите внимание, что это исключает ответы на: Какая библиотека браузера на стороне клиента лучше всего подходит для загрузки нескольких файлов по http?.
Решение
Вы не сможете сделать это только с помощью HTML и Javascript.Я бы порекомендовал попробовать Необычная Загрузка, а Инструменты для переговоров плагин для загрузки нескольких файлов.Он использует смесь JavaScript и Flash, но изящно деградирует.Он работает со всеми основными браузерами, включая IE6, а также доступна для скачивания версия, совместимая с Flash 10 (хотя демо-версия еще не была обновлена).
Обновление (2012-11-26):
Несколько файлов загрузка возможна с помощью ценности или блюимп устройства для загрузки файлов.
Для рекурсивный каталог загружает, ваше лучшее решение - использовать Chrome 11 новый API для загрузки папок.Похоже, это также работает в Firefox, если вы используете префикс поставщика.
Другие советы
В Firefox 42 и Edge реализовано новое предложение по загрузке каталога , мы ' Наконец-то я смогу выполнять кросс-браузерную загрузку каталогов. API-интерфейсы достаточно противны, так что вы можете проверить мою оболочку, uppie .
Если вы избегаете Flash (и, вероятно, Java?), для решения только для JS / HTML все еще требуются однофайловые файлы input
, но по сути вы присоединяете событие onchange
к своим <=>, добавляя новое <=> в DOM всякий раз, когда файл выбран.
FTP?И если необходимо, оберните Java-апплет, ActiveX или что угодно еще, что вы хотите.
Если нет, хотя вам и не нужен flash, SWFUpload - это довольно круто, возможно, вы захотите пересмотреть его как достойный вариант.
Несколько файлов загрузка возможна с помощью ценности или блюимп устройства для загрузки файлов.
Для рекурсивный каталог загружает, ваши возможности более ограничены:
Ваше лучшее решение - это использование Chrome 11 новый API для загрузки папок.Похоже, это также работает в Firefox, если вы используете префикс поставщика.
Это также возможно в кроссбраузерном режиме с Java-апплет.Однако в наши дни процент людей с установленным JRE стал довольно низким (< 70%)
Это не чисто решение js / html. Как указывает EndangeredMassa, это невозможно. Фактически, эта идея - решение только для IE / Windows. Я не рекомендую это, но это может работать.
Итак, все отказы от ответственности ...
Много лет назад и несколько работодателей мы делали некоторые вещи на стороне клиента, которые создавали экземпляр FileSystemObject. Он будет перебирать каждый из файлов и передавать их на сервер по одному. Не могу вспомнить детали того, как мы это сделали: o (
В любом случае это обычно означало, что клиентскому боксу нужно будет добавить сайт в список доверенных сайтов и дать доверенным сайтам кучу разрешений, которые отключены (по очень веским причинам). Вещи, такие как возможность инициализации и сценария элементов управления ActiveX, не помечены как безопасные. Такого рода вещи.
Я знаю, что это не идеальный ответ, но он может указать вам верное направление.
Здесь - чистое решение JS с использованием библиотеки ExtJS