Каков наилучший способ загрузить папку на веб-сайт?
Мне нужен простой способ разрешить пользователям загружать сразу несколько файлов (т.е. мне нужно разрешить пользователю загружать папку). Я не хочу возлагать бремя на пользователя.
Я предпочел бы избегать 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