Загрузка файла на ftp-сервер по FTP протоколу на PHP
$file_name = 'файл для загрузки с путем';
$ftp_server = 'your_domain.net';
$ftp_port = 21;
$ftp_file = 'имя файла с путем на ftp-сервере';
$ftp_user_name = 'ftp-user';
$ftp_user_pass = 'ftp-pass';
$error_to = 'your@email.net'; // E-mail для сообщений об ошибках
$ftp = ftp_connect($ftp_server, $ftp_port, 20);
ftp_login($ftp, $ftp_user_name, $ftp_user_pass);
ftp_pasv($ftp, true); // Passive mode
if(!ftp_put($ftp, $ftp_file, $file_name, FTP_BINARY)){
// Ошибка загрузки
mail($error_to,
'FTP-upload error',
"There was a problem while uploading {$file_name} to {$ftp_server}.",
"From: admin@htmlweb.ru\nContent-Type: text/plain; charset=utf-8");
}
ftp_close($ftp);
Вариант загрузки файла на ftp-сервер в асинхронном режиме с автодокачкой
$ftp_server = 'your_domain.net';
$ftp_user_name = 'ftp-user';
$ftp_user_pass = 'ftp-pass';
$file = 'index.php';
$fp = fopen($file, 'r');
$ftp = ftp_connect($ftp_server);
$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);
// Начало загрузки вместо FTP_AUTORESUME можно указать ftp_size($ftp,"test.remote") для докачки с места обрыва
$ret = ftp_nb_put($ftp, "test.remote", "test.local", FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
// производим какие-то действия ...
echo ".";
// продолжение загрузки ...
$ret = ftp_nb_continue($ftp);
}
if ($ret != FTP_FINISHED) {
echo "При загрузке файла произошла ошибка...";
exit(1);
}
.
Прокомментировать/Отблагодарить