Проверьте SWFUpload , который, по сути, представляет собой API-интерфейс javascript для абсолютно превосходных возможностей Flash при обработке загрузки файлов. Лучше всего, пока браузеры наконец не догонят.
Из ссылки:
- Загрузка нескольких файлов одновременно с помощью ctrl / shift-selection в диалоговом окне
- Обратные вызовы Javascript для всех событий
- Получить информацию о файле перед началом загрузки
- Стиль загрузки элементов с использованием XHTML и css
- Отображение информации во время загрузки файлов с использованием HTML
- Нет необходимости в перезагрузке страницы
- Работает на всех платформах / браузерах с поддержкой Flash.
- Изящно понижается до обычной формы загрузки HTML, если Flash или
JavaScript недоступен
- Контроль размера файла перед началом загрузки
- Отображать только выбранные типы файлов в диалоге
- Очередь закачек, удаление / добавление файлов перед началом загрузки
Демонстрация
----- загрузка iframe -----
Для начала вы хотите разместить на своей странице iframe. Это предназначено для связи с сервером. Вы будете скрывать это позже, но пока держите это видимым. Присвойте этому iframe атрибут name, например, «uploader» или что-то в этом роде.
Теперь в вашей форме установите в качестве цели имя iframe, а в качестве действия - сценарий, который вы используете на сервере, который будет принимать загрузку файла (как обычная форма с загрузкой файла). Добавьте ссылку внутри этой формы с текстом «Добавить файл». Установите эту ссылку для запуска функции JavaScript, которая добавит новый ввод в форму. Это можно сделать с помощью DOM, но я бы порекомендовал библиотеку javascript, например jquery .
После того, как новый ввод файла добавлен в форму, установите событие размытия этого ввода в функцию javascript, которая будет отправлять форму, а затем периодически проверять ее на предмет вывода. Чтение iframe может быть сложным, но это возможно.
Пусть ваш скрипт выгрузки файлов выдает "Done". или имя файла или что-то еще, когда загрузка будет завершена.
Проверяйте это каждую секунду или около того, пока не появится контент. Получив контент, убейте свой таймер и замените введенный файл именем файла (или «Файл загружен») или любым другим.
Скройте свой iframe с помощью css.