Каков наилучший способ загрузить папку на веб-сайт?

StackOverflow https://stackoverflow.com/questions/254251

  •  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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top