Мини-форма выгрузки файлов AJAX

Мини-форма выгрузки файлов AJAX

От автора: Учебник о том, как воссоздать выскальзывающее боковое меню-колонку, которое можно увидеть на вебсайте GoogleNexus 7.

В этом учебнике мы собираемся создать форму выгрузки файлов AJAX, которая позволит пользователям выгружать файлы со своих браузеров, просто перетащив/отпустив или выбрав их индивидуально. В этих целях мы скомбинируем мощный плагин jQuery File Upload с аккуратным jQuery Knob и представим гладкий интерфейс под управлением CSS3/JS.

скачать исходникидемо

HTML

Как обычно, начнем с базового документа HTML5:

В начало документа я включил два шрифта из Google Webfonts, а перед закрытием тэга body вы видите несколько библиотек JavaScript. Это библиотека jQuery, плагин jQuery Knob и зависимости для плагина jQuery File Upload. Основной элемент страницы – форма #upload. Внутри нее находится div #drop (принимающий выгрузки drag/drop) и неупорядоченный список. В этом списке будет содержаться элемент li для каждого из переносимых файлов. Ниже приведена сгенерированная разметка выгрузки файла:

Элемент input в вышеприведенном фрагменте скрыт с помощью CSS. Единственное его предназначение – инициализировать плагин jQuery Knob, который создаст красивый элемент загрузки (круговую шкалу). У input есть несколько атрибутов data-*, модифицирующих ее внешний облик. Позже, слушая прогресс выгрузки файла, мы обновим значение этого input, что вызовет перерисовку шкалы. У диапазона справа есть иконка; это может быть либо отметка-«галочка», либо красный крестик.

Код jQuery

С помощью этой формы можно выгружать файлы двумя способами:

Отпустив их в div #drop (во всех браузерах, кроме IE);

Щелкнув по кнопке «browse». Так симулируется щелчок по скрытому input файла, который выводит окно поиска файлов системы. Обратите внимание, что у input файла есть набор множества параметров, который позволяет выбрать зараз более одного файла (однако файлы все равно будут выгружаться индивидуально!).

Поведением по умолчанию этого плагина является размещение файлов в очередь, но мы сделаем так, чтобы файлы выгружались автоматически после выбора/перетаскивания. Ниже можно посмотреть JS:

assets/js/script.js

Библиотека jQuery File Upload укомплектована собственным дизайном jQuery, управляемым интерфейсом, которым можно сразу же пользоваться. Однако, так как нам нужен полностью пользовательский интерфейс, мы воспользуемся не включающей его базовой версией плагина. Чтобы она заработала, передаем несколько опций/внешних вызовов конфигурации. В вышеприведенном коде это:

dropZone – это свойство содержит селектор jQuery элемента, который будет действовать как объект-приемник. Опускаемые в него файлы будут добавляться в очередь выгрузки.

add – эта функция внешнего вызова вызывается при добавлении файла в очередь. Внутри нее мы создаем разметку HTML, которая будет представлять файл, добавляем ее в UL и запускаем метод data.submit(). Он без промедления вызовет прямую выгрузку добавленного файла.

progress – этот внешний вызов выполняется плагином каждые 100мс (настраивается). Второй аргумент (атрибут data) содержит размер файла и количество переданных байтов. Это позволяет нам подсчитать процент выполнения и впоследствии обновить скрытый элемент input, который в свою очередь обновляет шкалу.

fail – эта внешняя функция выполняется, если с вашим скриптом PHP возникла проблема. Скорее всего, это будет означать, что upload.php отсутствует или выдает какую-то ошибку (для исправления потенциальных проблем воспользуйтесь инспектором своего веб-браузера).

Смотрите полный список доступных опций конфигурации на этой странице. Я включил еще несколько источников информации о плагине в раздел Ресурсы и дополнительная информация в конце этого учебника.

Свойство data.context между вызовами этого метода плагина сохраняется. Таким образом мы узнаем, который пункт LI нужно обновлять при событиях прогресса и сбоя закачки.

Скрипт PHP

jQuery File Upload также укомплектован мощным скриптом PHP для управления выгрузки файлов, который можно разместить на своем сервере, но в этом учебнике мы создадим свой собственный. Выгрузки файлов, посылаемые плагином, практически те же самые, что и при выгрузке обычной формы – получить информацию о выгрузке можно через массив $_FILES:

Как я уже ранее упоминал, хотя можно выбрать сразу несколько файлов, выгружаются они один за другим. Так их гораздо легче контролировать с помощью нашего скрипта PHP. Сейчас файлы просто перемещаются в папку uploads, но можно расширить ее, добавив в базу данных аутентификацию или создание записей.

Вот и все! Надеюсь, вам пригодится эта форма выгрузки файлов ajax! Если у вас возникнут предложения или вопросы, оставьте их в области комментариев.

Автор: Martin Angelov

Источник: //tutorialzine.com/

Редакция: Команда webformyself.

Метки: ,

Похожие статьи:

Комментарии Вконтакте:

Комментарии (3)