Transfer fajlove preko FTP-a kroz PHP
28.02.2010. u 11:54 · pre 202 meseci
#1
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:
Kada izvrsim ovaj skript ne prijavljuje nikakvu gresku, ali fajlovi nisu prebaceni.
Molim za neke smernice!
Hvala!
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");
//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!
Potpis
Listen very carefully, I shall say this only once!