папка по ftp

zxxx

Постоялец
Регистрация
9 Окт 2009
Сообщения
148
Реакции
4
есть папка pic с рисунками и вложенными в нее дополнительными папками, нужно эту папку закачать по ftp
 
Для начала нужно включить функции для работы с фтп:
--enable-ftp во время установки PHP 4 или --with-ftp при использовании PHP 3.

Вот пример кода:
PHP:
<?php
// установка соединения
$conn_id = ftp_connect($ftp_server); 

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// проверка соединения
if ((!$conn_id) || (!$login_result)) { 
        echo "Не удалось установить соединение с FTP сервером!";
        echo "Попытка подключения к серверу $ftp_server под именем $ftp_user_name!";
        exit; 
    } else {
        echo "Установлено соединение с FTP сервером $ftp_server под именем $ftp_user_name";
    }

// закачивание файла
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// проверка результата
if (!$upload) { 
        echo "Не удалось закачать файл!";
    } else {
        echo "Файл $source_file закачен на $ftp_server под именем $destination_file";
    }

// закрытие соединения
ftp_close($conn_id); 
?>
 
  • Нравится
Реакции: zxxx
мне нужно закачать не файл, а папку целиком
 
мне нужно закачать не файл, а папку целиком
Тогда либо архивируй, закачивай архив, а потом разарзивируй, либо в цикле закачивай все файлы, что есть в папке.
 
Можешь показать код как архивировать, а потом рахархивировать на сервере?

Тут много вариантов есть, уточни задачу.
1. С какими архивами хочешь работать zip, tar или еще что?
2. На том серваке где у тебя фтп доступ что еще есть, только фтп?
 
Хочу работать с zip архивом, хотя не так важно, нужно папку с файлами заархивировать, залить на сервер и там разархивировать. Это фрихост, там фтп
 
В последнем пма есть классы которые зипуют и анзипуют, лежат
тут
/phpMyAdmin-2.11.2.2/libraries/unzip.lib.php
/phpMyAdmin-2.11.2.2/libraries/zip.lib.php
 
Я пробовал эти классы, фрихост не поддерживает много чего. И все же хочется сделать заливку по фтп без архива, чтобы каталоги на сервере создавались необходимые, и желательно в многопоточном режиме. пробовал скрипт

PHP:
<?php
 $ftp_server    = 'ftp.freehost.com';
 $ftp_login     = 'login';
 $ftp_password  = 'password';
 $local_dir     = 'upload';
 $ftp_root      = '/public_html/';
 
function do_upload($dir = 'upload')
 {   
   global $conn_id, $ftp_root, $transfer_mode, $local_dir;
    $ftp_dir = preg_replace('/^'.$local_dir.'\/?/', '', $dir);
    if ($ftp_dir != '')
       echo 'Папка '. $ftp_dir . ((ftp_mkdir($conn_id, $ftp_root . $ftp_dir)) ? ' создана' : ' не создана').'<br />';
    $filelist = glob(($dir!='') ? $dir.'/*' : '*');
    if ($filelist == array())
       return 0;
    foreach ($filelist as $file)
       {
       if (is_file($file))
          {
          $transfer_mode = (preg_match('/\.(gif|jpg|png)$/', $file)) ? FTP_BINARY : FTP_ASCII;
          echo 'Файл ' . $file . ((ftp_put($conn_id, $ftp_root . preg_replace('/^'.$local_dir.'\//', '', $file), $file, $transfer_mode)) ? ' загружен' : ' не загружен').'<br />';
          }
       else    
          do_upload($file);
       }
    return 0;   
}
 
$conn_id = ftp_connect($ftp_server);
 $login_result = ftp_login($conn_id, $ftp_login, $ftp_password);
 if (!$conn_id || !$login_result)
    exit("Не удалось установить соединение с FTP сервером!\nПопытка подключения к серверу $ftp_server!");
 else
    echo "Установлено соединение с FTP сервером $ftp_server<br />";
 do_upload($local_dir);
 ftp_close($conn_id);
 ?>

выходит ошибка, не помню какая, примерно так "preg_replace(:( Unknown modifier 'd'"
 
Назад
Сверху