Пример загрузки фалов пользователями на сервер с помощю cURL по FTP



Гадкие хостеры лимитируют размер загружаемого файла на сервер. Но порой юзеру кровь из носу надо загрузить небольшое видео, или большой архив.
Данный метод загрузки использует FTP соединение, да ещё обходя функции PHP для работы с FTP, которые часто отключены, или тоже лимитируются.
Размер файла теперь может быть любой, единственно что ограничивает загрузку - максимально разрешенное время работы скрипта на сервере.
Обычно это время (параметр max_execution_time в php.ini) администраторы устанавливают в 30 секунд. Но и за этот отрезок, при довольно скоростном сервере, можно закачать не мало. Я, например, на бюджетном тарифе Steadyhost.ru закачифаю файлы до 100 мегабайт, что вполне достаточно для загрузки небольших видеороликов.

У вас работает cURL? - смотрим запустив скрипт с одной функцией phpinfo();
Работает ли cURL?

Тогда поехали!
Для начала пример, как всё это выглядит (можно пробовать):

Загрузчик файла



СКАЧАТЬ ИСХОДНИКИ
Всего два скрипта. Первый - форма и прогресс бар загрузки. Второй (подгружаемый Ajax-ом) - непосредственно загружающий файл.

Не буду сюда вывешивать коды, в архиве всё понятно.
Что хотелось добавить, так это о безопасности.
Казалось бы, аккаунт FTP и прочее. Однако, грамотно настроив проверку, мы получаем загрузку много безопаснее обычной, так как принимающую файл папку не надо атрибутить на запись для всех 777, а только для администратора 755, для FTP этого достаточно. Следовательно загрузка шеллов злоумышленниками практически невозможна!

P.S. Кодировка этого сайта windows-1251, и файлы в дистрибутиве тоже, их легко можно перекодировать с помощью Notepad++.
На эту разработку меня сподвигла ужасная работа FTP на этом сервере, желаемого я не достиг, но хоть что то.

6 февраля 2016. Олег Пименов. procentych@mail.ru



Вчера мне прислали линк на эту рубрику.

Рейтинг@Mail.ru Яндекс.Метрика

При поддержке сайта ФК "Динамо" (Москва)