папка по ftp

Тема в разделе "PHP", создана пользователем zxxx, 30 май 2011.

Модераторы: latteo
  1. zxxx

    zxxx Постоялец

    Регистр.:
    9 окт 2009
    Сообщения:
    148
    Симпатии:
    4
    есть папка pic с рисунками и вложенными в нее дополнительными папками, нужно эту папку закачать по ftp
     
  2. xmr

    xmr Постоялец

    Регистр.:
    2 дек 2009
    Сообщения:
    56
    Симпатии:
    16
    Для начала нужно включить функции для работы с фтп:
    --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_fileFTP_BINARY); 

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

    // закрытие соединения
    ftp_close($conn_id); 
    ?>
     
    zxxx нравится это.
  3. zxxx

    zxxx Постоялец

    Регистр.:
    9 окт 2009
    Сообщения:
    148
    Симпатии:
    4
    мне нужно закачать не файл, а папку целиком
     
  4. xmr

    xmr Постоялец

    Регистр.:
    2 дек 2009
    Сообщения:
    56
    Симпатии:
    16
    Тогда либо архивируй, закачивай архив, а потом разарзивируй, либо в цикле закачивай все файлы, что есть в папке.
     
  5. zxxx

    zxxx Постоялец

    Регистр.:
    9 окт 2009
    Сообщения:
    148
    Симпатии:
    4
    Можешь показать код как архивировать, а потом рахархивировать на сервере?
     
  6. PHPCod3r

    PHPCod3r

    Регистр.:
    7 июн 2010
    Сообщения:
    261
    Симпатии:
    25
    Тут много вариантов есть, уточни задачу.
    1. С какими архивами хочешь работать zip, tar или еще что?
    2. На том серваке где у тебя фтп доступ что еще есть, только фтп?
     
  7. zxxx

    zxxx Постоялец

    Регистр.:
    9 окт 2009
    Сообщения:
    148
    Симпатии:
    4
    Хочу работать с zip архивом, хотя не так важно, нужно папку с файлами заархивировать, залить на сервер и там разархивировать. Это фрихост, там фтп
     
  8. PHPCod3r

    PHPCod3r

    Регистр.:
    7 июн 2010
    Сообщения:
    261
    Симпатии:
    25
    В последнем пма есть классы которые зипуют и анзипуют, лежат
    тут
    /phpMyAdmin-2.11.2.2/libraries/unzip.lib.php
    /phpMyAdmin-2.11.2.2/libraries/zip.lib.php
     
  9. zxxx

    zxxx Постоялец

    Регистр.:
    9 окт 2009
    Сообщения:
    148
    Симпатии:
    4
    Я пробовал эти классы, фрихост не поддерживает много чего. И все же хочется сделать заливку по фтп без архива, чтобы каталоги на сервере создавались необходимые, и желательно в многопоточном режиме. пробовал скрипт

    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'"