Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Transfer fajlove preko FTP-a kroz PHP

[es] :: PHP :: Transfer fajlove preko FTP-a kroz PHP

[ Pregleda: 1360 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

duchess
Ivana Petrovic
In the middle of nowhere.

Član broj: 142670
Poruke: 132
*.dynamic.sbb.rs.

Sajt: ivona.stens-turs.com


Profil

icon Transfer fajlove preko FTP-a kroz PHP28.02.2010. u 11:54 - pre 172 meseci
Zdravo!
Pokusala sam da napravim skriptu koja ce sa jednog hostinga prebaciti fajlove na neku drugi hosting preko ftp_connect funkcija. Ali nesto mi ne funkcionise najbolje, i ne mogu da pohvatam sta. Naime, pokretanje transfera vrsim preko AJAX-a. Npr. korisnik klikne na dugme i AJAX pokrene skriptu koja se zove bridge.php u kojoj se nalaze pristupni podaci ka serveru i dve funkcije, jedna za citanje fajlova i foldera sa lokalnog hosta i druga funkcija koja te fajlove treba da prekopira preko ftp-a na drugi host.
Evo i koda:
Code:

//funkcija za konektovanje na ftp host
            function ftp_copy($source_file, $destination_file, $domen_usernameF, $domen_sajtaF, $passwordF)
            {
                $ftp_server = "87.106.200.4";
                $ftp_user = $domen_usernameF."@".$domen_sajtaF;
                $ftp_password = $passwordF;
                 
                $conn_id = ftp_connect($ftp_server);
                $login_result = ftp_login($conn_id, $ftp_user, $ftp_password);
             
                if((!$conn_id) || (!$login_result))
                {
                        $greska.="FTP connection has failed!<br />";
                        $greska.="Attempted to connect to $ftp_server for user $ftp_user<br />";
                        exit();
                }
                exit("Attempted to connect to $ftp_server for user $ftp_user<br />");
                 if( is_dir($source_file) )
                {
                    if(!file_exists($destination_file))
                    {
                        ftp_mkdir($conn_id, $destination_file);
                    }
                }
                else
                {
                    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
                }
                
                ftp_close($conn_id); 
             
                if(!$upload)
                {
                       $greska.="FTP copy has failed!<br />";
                   return false;
                }
                else
                {
                    return true;
                }
            }
            function rec_listFiles($from = '.',$novi_fajl, $domen_usernameF, $domen_sajtaF, $passwordF)
                {
                    if(! is_dir($from))
                        return false;
                   
                    $files = array();
                    if( $dh = opendir($from))
                    {
                        while( false !== ($file = readdir($dh)))
                        {
                            // Skip '.' and '..'
                            if( $file == '.' || $file == '..')
                                continue;
                            $path = $from . '/' . $file;
                            if( is_dir($path) )
                            {
                                if(!file_exists($novi_fajl."/".$file))
                                {
                                    //mkdir($novi_fajl."/".$file);
                                    ftp_copy($novi_fajl."/".$file, $novi_fajl."/".$file, $domen_usernameF, $domen_sajtaF, $passwordF);
                                }
                                $novo=explode("/",$path);
                                $files += rec_listFiles($path,$novi_fajl."/".$novo[2], $domen_usernameF, $domen_sajtaF, $passwordF);
                            }
                            else
                            {
                                $files[] = $path;
                                
                                //if(!copy($path,$novi_fajl."/".$file))
                                if(!ftp_copy($path, $novi_fajl."/".$file, $domen_usernameF, $domen_sajtaF, $passwordF))
                                {
                                    $greska.="Greška pri kopiranju fajla: <b>".$novi_fajl."/".$file."</b>. Molim da javite administratoru za ovu gresku na [email protected]";
                                }
                            }
                        }
                        closedir($dh);
                    }
                    return $files;
                }
                //izvrsavam transfer fajlova, slika na novi host
                rec_listFiles($putanja,$newfile, "dmnusername", "mojsajt.com", "dmnuserpass");


Kada izvrsim ovaj skript ne prijavljuje nikakvu gresku, ali fajlovi nisu prebaceni.

Molim za neke smernice!
Hvala!
Listen very carefully, I shall say this only once!
 
Odgovor na temu

zigizig

Član broj: 42968
Poruke: 167
82.117.198.*



+10 Profil

icon Re: Transfer fajlove preko FTP-a kroz PHP01.03.2010. u 09:33 - pre 172 meseci
Umesto
Code:
exit("Attempted to connect to $ftp_server for user $ftp_user<br />");

mozda je bolje
Code:
print("Attempted to connect to $ftp_server for user $ftp_user<br />");

;)

Mada je bolje da napravis logger.
Code:

//Multiline error log class

Class log {

    const GENERAL_ERROR_DIR = 'messages.log';
    /*
     General Errors...
     */
    public static function general($msg)
    {
        $date = date('d.m.Y h:i:s');
        $log = $msg."   |  Date:  ".$date."\n";
        error_log($msg."   |  YourName:  ".$date."\n", 3, $_SERVER['DOCUMENT_ROOT']."/../".self::GENERAL_ERROR_DIR);
    }

}

Inkludujes klasu i onda samo koristis
log::general("Message");
 
Odgovor na temu

[es] :: PHP :: Transfer fajlove preko FTP-a kroz PHP

[ Pregleda: 1360 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.