Перекачка файлов ftp2ftp

Discussion in 'PHP' started by fuckthesystem, 16 Dec 2007.

  1. fuckthesystem

    fuckthesystem Elder - Старейшина

    Joined:
    22 Aug 2007
    Messages:
    37
    Likes Received:
    6
    Reputations:
    0
    поиск перерыл, нниче не нашел.
    вобщем нужен скрипт для перекачки файлов с одного фтп на другой, т.е. не тратя своего трафа.
    где то видел, но не помню названия... мож кто знает?
     
  2. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    из шелла от рст возьми
     
  3. Ali_MiX

    Ali_MiX Elder - Старейшина

    Joined:
    8 Oct 2006
    Messages:
    377
    Likes Received:
    67
    Reputations:
    -2
    Вот этот.
    PHP:
    <?php
    if(isset($HTTP_POST_VARS['in']))
    {
      
    $fn $HTTP_POST_VARS['in'];
      
    $handle fopen ($fn'rb');
      
    $contents "";
      if(!
    $handle)
        echo 
    'Не могу открыть исходный файл';
      else
      {
        while(!
    feof($handle))
        {
          
    $data fread($handle8192);
          
    $contents .= $data;
        }
        
    fclose ($handle);

        
    // './download/' можно заменить, например, на $HTTP_GET_VARS['path']
        
    $handle fopen ('./download/' basename($fn), 'wb');
        if(!
    $handle)
          echo 
    'Не могу создать записать файл';
        else
        {
          
    fwrite($handle$contents);
          
    fclose($handle);
          echo 
    'Передача завершена';
        }
      }
    }
    ?>               

    <FORM ACTION="<?php echo $_SERVER['PHP_SELF']; ?>" METHOD="post">
     <INPUT TYPE="hidden" NAME="act" VALUE="send">
     URL:<BR />
     <INPUT TYPE="text" NAME="in" SIZE="64"><BR />
     <INPUT TYPE="submit" VALUE=" Send ">
    </FORM><BR />
    </BODY></HTML>


     
  4. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    вот если что подправь как нужно
    PHP:
    <?php

    echo '<html>
    <table border="0" width="90%" align="center">
    <form action="index.php" method="post">
    <tr >
    <td colspan="2" align="center" >
    <b><font size="3">Скрипт для скачивания файла с одного сервера на другой<font></b>
    </td>
    </tr>
    <tr>
    <td colspan="2" align="center"><b><font color=red size=2>Основные настройки</font></b></td>
    </tr>
    <tr>
    <td><b><font color=#C0C0C0>Файл для скачивания</font><b></td>
    <td><input type="text" name="file"  class=ftpwork value="file.sql"></td>
    </tr>
    <tr>
    <td><b><font color=#C0C0C0>Путь до директории с файлом относительно сайта</font></b></td>
    <td><input type="text" name="path"  class=ftpwork value="/downloads"></td>
    </tr>
    <tr>
    <td><b><font color=#C0C0C0>Хост, с которого будем сливать файл</font></b></td>
    <td><input type="text" name="host"  class=ftpwork value="server.ru"></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><b><font color=#FF0000>Настройки FTP</font></b></td>
    </tr>
    <tr>
    <td><b><font color=#C0C0C0>FTP хост, на который будем заливать файл</font></b></td>
    <td><input type="text" name="ftphost"  class=ftpwork value="ftp.server.ru"></td>
    </tr>
    <tr>
    <td><b><font color=#C0C0C0>FTP логин<font></b></td>
    <td><input type="login" name="login"  class=ftpwork value="ftpuser"></td>
    </tr>
    <tr>
    <td><b><font color=#C0C0C0>FTP пароль<font></b></td>
    <td><input type="pass" name="pass"  class=ftpwork value="ftppass"></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" value="Отправить" class="ok"></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><b>
    <font color=#FFFFFF>Coded by </b><a href="http://p-range.info"><b>p-range</b></a></td>
    </tr>
    </form>
    </table>'
    ;
    if(isset(
    $_POST['file']) && isset($_POST['path'])
            && isset(
    $_POST['host']) && isset($_POST['ftphost'])
            && isset(
    $_POST['login']) && isset($_POST['pass']))
    {
    $file $_POST['file']; // файл для скачивания
    $path $_POST['path']; // путь до директории с файлом относительно сайта
    $host $_POST['host']; // Хост, с которого будем сливать файл
    $ftphost $_POST['ftphost']; // FTP хост, на который будем заливать файл
    $login $_POST['login']; // FTP логин
    $pass $_POST['pass']; // FTP пароль
    // открыли соединение
    $so fsockopen($host80, &$errno, &$errstr30);
    // послали GET форму (простой URL + указание вирт. хоста)
    fputs($so,"GET $path/$file HTTP/1.0\nHOST: $host\n\n");

    // читаем все, пока не наступит "конец заголовка" (т.е. начало документа)
    // если наступит, то со след. байта начнется документ
    while(fgets($so,2048)!="\r\n" && !feof($so));

    unset(
    $buf);
    // читаем документ в переменную
    while(!feof($so)) $buf.=fread($so,2048);
    // Готово. В переменной $buf храниться скаченный документ (т.е. файл)
    // Максимум можно читать порциями по 64K-1байт

    // закрываем сокет
    fclose($so);
    echo 
    "Download file, size ".strlen($buf)." bytes.<br>"flush();

    // используем скаченный файл (в переменной) по назначению...
    $f=fopen($file,"wb+");
    fwrite($f,$buf,strlen($buf));
    fclose($f);

    $ftp ftp_connect($ftphost);
    if(
    $ftp)
    {
            @
    $res ftp_login($ftp,$login,$pass);
            if(
    $res)
            {
                    
    $fp fopen($file"r");
                    
    $fput ftp_fput($ftp$file$fpFTP_BINARY);
                    
    fclose($fp);
                    if(!
    $fput)
                    {
                            echo 
    "<font color='#cc1233'>Error transfering</font>";
                            
    ftp_quit($ftp);
                    }
                    else
                    {
                            echo 
    "<font color='#666666'>Success transfering <b>".$file."</b></font>";
                    }
            }
            else
            {
                    echo 
    "<font color='#cc1233'>Error login</font>";
                    
    ftp_quit($ftp);
            }
    }
    }
    ?>
     
  5. fuckthesystem

    fuckthesystem Elder - Старейшина

    Joined:
    22 Aug 2007
    Messages:
    37
    Likes Received:
    6
    Reputations:
    0
    блин, выкидывает вот такую хрень:
    Warning: fopen() [function.fopen]: failed to open stream: No route to host in *** on line 5

    эт типа хостинг хреновый или подправить чего?
     
  6. AFoST

    AFoST Elder - Старейшина

    Joined:
    28 May 2007
    Messages:
    588
    Likes Received:
    485
    Reputations:
    176
    Это или хостинг хреновый(на нем отключены сокеты), или не находится хост, к которому обращаешься.
     
  7. lsass.exe

    lsass.exe Elder - Старейшина

    Joined:
    5 Aug 2007
    Messages:
    156
    Likes Received:
    161
    Reputations:
    24
    проверь работоспособность конечного хоста