Загрузка файлов на FTP
Любой администратор сайта хочет, что бы посетителей на его сайте было больше, а трафик, который они съедают, был небольшим.
Для этого они открывают бесплатные фтп аккаунты, которые позволяют бесплатно загружать и скачивать файлы небольшого размера (как правило, не более 10 МБ). В этом случае возникает проблема автоматической загрузки файлов на фтп. В данной статье я продемонстрирую вам, как с помощью небольшой функции PHP максимально облегчить вам данную задачу.
Создадим небольшую форму загрузки файла:
<form action=upl.php method=post enctype="multipart/form-data" name=Form>
<input type=file name=filename>
<input type=submit value='Загрузить'>
</form>
Обратите внимание, что upl.php, это имя файла, куда передаются данные, который и должен содержать функцию обработки и загрузки файла. Также при описании формы необходимо указать строку
enctype="multipart/form-data"
которая позволяет загружать любые данные. Если у вас файл не загружается на фтп, первым делом проверьте, добавили ли вы это свойство.
Код файла upl.php:
<?php
function upload($filename)
{
$login="ваш_логин";
$pass="ваш_пароль";
$host="имя_фтп";
$path="путь_к_папке";
$tmp = $_FILES[$filename]['tmp_name'];
$aname = $_FILES[$filename]['name'];
$connect = ftp_connect($host);
if(!$connect) exit();
$result = ftp_login($connect, $login, $pass);
if ($result==false) exit();
if (ftp_chdir($connect, $path)) ftp_put($connect, $aname, $tmp, FTP_BINARY);
else exit();
ftp_quit($connect);
unlink($tmp);
};
if (isset($filename)) upload('filename')
?>
$login и $pass – логин и пароль вашего фтп аккаунта
$host – имя вашего фтп (например, ftp.microsoft.com)
$path – внутренний путь к папке, куда необходимо загрузить файл (права для данной папки обязательно должны стоять на запись). Например /alex/download/upload/.
$tmp = $_FILES[$filename]['tmp_name']
Определяем временное имя загружаемого файла. Здесь необходимо объяснить принцип загрузки файла. После того, как вы нажали на кнопку “Загрузка”, файл был помещен во временную директорию на вашем сервере (обычно папка tmp). Только после этого мы можем работать с данным файлом и пересылать его куда надо. Обычно содержимое папки tmp уничтожается автоматически, но что бы перестраховаться, в конце всех операций необходимо самому удалить файл
unlink($tmp)
Теперь необходимо соединиться с фтп:
$connect = ftp_connect($host);
if(!$connect) exit();
$result = ftp_login($connect, $login, $pass);
if ($result==false) exit();
Сразу же проверяем, если соединение отсутствует ($connect=false) или указаны неверные данные логина и/или пароля ($result=false) то прекращаем выполнение функции.
Далее при помощи функции ftp_chdir переходим в папку $path и загружаем файл с помощью функции ftp_put:
if (ftp_chdir($connect, $path)) ftp_put($connect, $aname, $tmp,
FTP_BINARY);
else exit()
Файл загружен, теперь необходимо отсоединиться от фтп и удалить временный файл:
ftp_quit($connect);
unlink($tmp)
Теперь осуществим обращение к функции:
if (isset($filename)) upload('filename')
Если пользователь выбрал какой-то файл ($filename не пустой), то загружаем данный файл на фтп.