Ajax uploader

Недавно понадобилось в галерее сделать аплоад. После поисков ajax uploader’a решил сделать свой.Недавно понадобилось в галерее сделать аплоад. После поисков ajax uploader’a решил сделать свой позаимствовав некоторые запчасти от Fancy Upload (Кстати только у меня его индикатор движется как то непропорционально?)

Как и Digitarald я  применил  mootools фреймворк.

Серверная часть позаимствована от Steve Miles ajax uploader 🙂

Требования от хостинга:

  1. Выполнение cgi скриптов.
  2. Установленный Perl.
  3. PHP (4 или 5)

Возможности:

  1. Закачивать большие файлы на сервер. ( Вы не ограничены директивами max_post_size или max_upload_size и т.п.)
  2. Во время загрузки файла отображается индикатор прогресса. (Также возможно отображать скорость и расчетное время конца загрузки)
  3. Сделать ajax аплоад опциональным. Тоесть пользователь может выбрать для себя режим загрузки.

Данный скрипт удобно применять в система где уже есть аплоад и хотелось бы сделать прогрессбар с минимумом прилагаемых усилий.

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

Пример upload.tpoxa.com

Первый вариант – обычный.

Закачайте файл

Скрипт postscript.php отображает значения суперглобальных массивов $_POST и $_FILES
Обычно мы используем функцию move_uploaded_file котороя переместит файл в папку для постоянного хранения

В случае же “аякс загрузки” это делает наш cgi скрипт который закачивает файл сначала во временное хранилище потом в любую папку которую мы укажем.
В результате postscript.php не получит никаких данных в $_FILES но зато в $_POST будет уже локальный (размещенный на сервере) адрес загружаемого файла.
В общем советую поиграться на примере.

Для того чтобы форма стала “аяксовой” нужно подключить в странице файлы аплоадера и выполнить такой код


“myaupload” – Это ID нашей формы.

Настройка.

Настройка сводится к заливке всех файлов на сервер и установки прав на них.

Папки tmp и upload должны быть записуемыми для PHP.  CHMOD 777

У /cgi-bin/upload.cgi – должны быть права для запуска CHMOD 755

Для отладки советую включить DEBUG режим при котором iframe в который “сабмитится” форма будет видим


Если появятся какие вопросы с радостью отвечу.
uploader.zip

10 thoughts on “Ajax uploader”

  1. Ограничие на аплоад записано в cgi файле и больше ничем не ограничено.

  2. Обновил http://upload.tpoxa.com – Оказывается он не работал.
    Здесь можете испытать на больших файлах. Сейчас на тесте ограничение около 10 гб ))

    Порядок установки.
    Залить все файлы в корень WWW хоста (сайта)
    Установить права 755 (права на запуск) файлу cgi-bin/upload.cgi
    Разрешить PHP записывать в папки /tmp и /upload – установить права на них 777

  3. Файлы с русскими именами, становятся иероглифами. Как это исправить?

    1. Честно говоря не знаю. Я оригинально имя файла записую в базу данных а сам файл переименовую в случайное название и тоже записую в базу.

      Скачивание у меня идет через скрипт…

  4. хотелось бы чтобы была проверка на то, выбрал ли человек файл? либо он сабмитит пустое поле file, а так же чтобы можно было задать какой тип файлов можно грузить 🙂 сообразим как это реализовать?

  5. че-то я запутался…Где взять переменную с именем файлы, $_POST – массив, а как его оттуда вытащить?В каком файле рыться?

Leave a Reply

Your email address will not be published. Required fields are marked *