Как-то для личных целей мне понадобилось сделать ajax загрузку сразу нескольких файлов. Но хотелось сделать это красиво и удобно.
Для этой задачи я выбрал горячо мной любимый jquery и несколько плагинов к нему.
Так же был написан простейший php-скриптик (файл doajaxfileupload.php).
Теперь чуть подробнее обо всём.
Плагин
Multiple File Upload позволяет выбирать несколько файлов для загрузки, так же он позволяет ограничивать типы файлов, количество выбираемых файлов, проверяет, выбран ли уже файл и многое другое. Использована последняя версия плагина, однако для нормальной работы с моей php формой были изменены две строчки, они помечены текстом " — replace by spiritzzz ".
Form плагин использовался для ajax отправки файлов на сервер. Очень хороший плагин, ему можно найти много применений, советую заглянуть на офф. сайт.
BlockUI Plugin служит лишь для декоративных целей, выводит красивые сообщения об ошибках плагина Multiple File Upload, его можно и не использовать.
В архиве, ссылку на который можно найти ниже, лежат самые свежие версии этих плагинов, а так же два php файлика —
index.php и
doajaxfileupload.php.
В
index.php собственно и находится html форма, подгружается jQ и все плагины:
$('.MultiFile').MultiFile({
accept:'jpg|gif|bmp|png|rar', max:15, STRING: {
remove:'удалить',
selected:'Выбраны: $file',
denied:'Неверный тип файла: $ext!',
duplicate:'Этот файл уже выбран:\n$file!'
}});
* This source code was highlighted with Source Code Highlighter.
— тут указываются разрешённые расширения файлов, максимальное их колличество (15), а так-же идет локализация сообщений об ошибках.
$("#loading").ajaxStart(function(){({
...
});
* This source code was highlighted with Source Code Highlighter.
— показывает и прячет картинку анимации при отправке
$('#uploadForm').ajaxForm({
...
});
* This source code was highlighted with Source Code Highlighter.
— отвечает за отправку файлов на сервер
doajaxfileupload.php рассматривать не буду, там всё достаточно просто, а если будут вопросы — пишите в комментариях.
P.S: после загрузки выводится много отладочной информации: ошибки, размер и тип файла и тд. Это легко комментируется в файле doajaxfileupload.php
Скачать настроенную, подточенную всю эту штуку можно
тут
UPD. Вот онлайн-пример (разрешены только файлы с расширением jpg, размером неболее 100кб и 3 штуки за раз)
комментарии (55)
spiritzzz.com/files/jquery_upload/
ВЫввоит каки еошибки могут возникунть в вашем брузере например в бете chrome наблюдался ряд проблем
Подскажите пожалуйста плагин для выбора нескольких файлов прямо в окне. Пример тут: files.mail.ru/Z19B77 (нажмите на «Обзор»).
1. На страницу кладем флешку. Из-за 10 флеш плеера кнопку выбора файлов нужно делать на ней.
2. Флеш позволит нам в одном окне выбрать несколько файлов, проверить размер, тип и т.д., для этого юзаем FileReference
3. Из флеша уже можем передавать на страницу процесс зарузки и момент ее завершения.
Упс, для аплоада нескольких файлов нужен FileReferenceList
Я думал что к окну выбора файла доступ получить нельзя. Или там какой-то хитрый флеш?
Спасибо.
З.Ы. На оф. сайте руководство и сорцы как-то беспорядочно лежат, имхо. Но разобраться можно :)
да и сборка из этих плагинов, что я описал, более гибкая, позволяет настроить больше всяких вкусностей :)
Form success handler received: string
{error: '',
msg: ' File Name: car1.jpg
File Type: image/jpeg
File Size: 96.5146484375Kb'
}
я ж сказал: фенсиаплоад (скачать и прочитать доку) + sortablelist (скачать и прочитать доку). всё
Передо мной стояла такая задача, так я её так и не нешил (в виде какого-то скрипта). Пришлось в проект прикручивать отдельный, инсталируемый загрузчик, что есть не гут.
print_r($_POST);
print_r($_GET);
print_r($_FILES);
Только files
Сыроват, обычно вместе с files передают с формой еще какие либо величины формы.