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

Мне нужен простой способ разрешить пользователям загружать сразу несколько файлов (т.е. мне нужно разрешить пользователю загружать папку). Я не хочу возлагать бремя на пользователя.

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

Ответы

Ответ 1

Вы не сможете сделать это только с помощью HTML и Javascript. Я рекомендую попробовать Fancy Upload, MooTools для добавления нескольких файлов. Он использует смесь JavaScript и Flash, но деградирует изящно. Он работает со всеми основными браузерами, включая IE6, а также доступна версия для совместимости с Flash 10, доступная для скачивания (хотя демо еще не обновлено).


Обновление (2012-11-26):

Загрузка нескольких файлов возможна с помощью valums или blueimp загрузчики файлов.

Для загрузки рекурсивного каталога, ваше лучшее решение использует Chrome 11 new API загрузки папок. Он также работает в Firefox, если вы используете префикс поставщика.

Ответ 2

Если вы избегаете Flash (и, предположительно, Java?), решение JS/HTML по-прежнему требует однофайлового input s, но по существу вы присоединяете событие onchange к вашему input, добавляя новый input в DOM всякий раз, когда выбран файл.

Ответ 3

С Firefox 42 и Edge, которые внедрили новое предложение для загрузки каталогов, мы, наконец, в состоянии выполнить загрузку каталогов в кросс-браузере. API достаточно противны, что вы можете проверить мою обертку, uppie.

Ответ 4

FTP? И если нет, оберните в Java-апплет, ActiveX или что угодно.

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

Ответ 5

Загрузка нескольких файлов возможна с помощью valums или blueimp загрузчики файлов.

Для загружаемых рекурсивных каталогов ваши параметры более ограничены:

  • Лучшее решение с помощью Chrome 11 нового API загрузки папок. Он также работает на Firefox, если вы используете префикс поставщика.

  • Это также возможно кросс-браузер с Java-апплет. Тем не менее,% пользователей с установленной JRE в наши дни получили довольно низкий уровень (< 70%)

Ответ 6

Это не чистое решение js/html. Как указал EndangeredMassa, это невозможно. На самом деле, эта идея является решением только для IE/Windows. Я не рекомендую его, но он может работать.

Итак, все отказа от ответственности...

Много лет и несколько работодателей назад мы использовали некоторые материалы на стороне клиента, которые создавали экземпляр FileSystemObject. Он будет проходить через каждый из файлов и передавать их на сервер по одному. Не помню подробностей о том, как мы это сделали: o (

В любом случае это обычно означало, что в окне клиента нужно будет добавить сайт в список доверенных сайтов и предоставить доверенным сайтам кучу разрешений, которые отключены (по очень веским причинам). Такие вещи, как возможность инициализации и script элементы управления ActiveX, не помеченные как безопасные. Такого рода вещи.

Я знаю, что это не идеальный ответ, но он может указать вам в правильном направлении.

Ответ 7

Здесь - это чистое решение JS с использованием библиотеки ExtJS