PHP. Асинхронная массовая загрузка файлов на сайт

Максим10 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
23.11.2014

Нужна асинхронная загрузка файлов с компьютера пользователя на сайт.

Для чего применяется

Пользователи загружают на сервер массивы фотографий (иногда по 100 штук за раз) - нужна удобная форма для такой загрузки. Самое время загрузки не имеет значения, главное что бы пользователь быстро и удобно перетащил/выбрал файлы.

Требования:

1. Пользователь должен иметь возможность либо перетаскивать файлы на веб-страницу мышкой (со своего компьютера), а также по нажатию открывается форма поиска файлов на компьютере с возможность множественного выбора. (Если какой-то браузер не поддерживает один из способов - выводить только тот метод, который поддерживается.)

2. Сразу после перетаскивания файлы начинают по очереди загружаться (загрузка асинхронная, но по очереди). Файлы могут быть, к примеру, по 40 мегабайт каждый, и post_max_size = 40 мегабайт.

3. Файлы загружаются во временную папку (название всегда одинаковое, но не temp_dir) на сервере под временными именами (откуда потом другой скрипт их заберёт).

4. Пользователь видит прогресс загрузки (в любом виде - главное, что бы понять, как долго она ещё будет идти и когда загрузка завершена). После загрузки всех файлов (либо вывода сообщение о том, что что-то не загрузилось) активируется кнопка перехода к следующему шагу.

5. После нажатия на кнопку перехода к следующему шагу, на следующую страницу методом POST передаётся массив названий загруженных файлов (как оригинальное имя, так и реальное имя на сервере).

Примечание:

1. Если у вас есть какой-то скрипт, который не совсем подходит под указанные требования - возможна корректировка требований.

2. Будут загружаться не только фотографии, но и фалы других форматов.

Пожелания:

1. Идеально - скрипт похожий на загрузку на mail.ru или яндекс.почта.

2. Сейчас использую скрипт с www.plupload.com, но хочется что-то более красивое. Либо plupload, но "облагороженный" - предложения рассматриваются.