PHP FTP üzerinden Tüm dizin yükle

4 Cevap php

Ben ftp ile diğer sunuculara benim sunucuda depolanan bir dizinin tüm içeriğini upload edecek bir senaryo yazmaya çalışıyorum.

Ben documentation on www.php.net aracılığıyla okuma oldum, ama bir seferde tek bir dosyaya daha sonra yüklemek için bir yol bulmak gibi olamaz.

Bunu yapmak için bir yolu var mı, veya dizin dizin ve dosyaları bir dizi oluşturmak upload olacağı bir senaryo var mı?

Yardımlarınız için şimdiden teşekkürler!

4 Cevap

Eğer açık bir bağlantısı var sonra, bir dizinin içeriğini yükleme seri basittir:

foreach (glob("/directory/to/upload/*.*") as $filename)
    ftp_put($ftp_stream, basename($filename) , $filename, FTP_BINARY);

Paralel olarak tüm dosyaları yükleyerek daha zor olacaktır.

Klasördeki tüm dosyaları yineleme, bir döngü içinde bunu

$servername = $GLOBALS["servername"];
    $ftpUser = $GLOBALS["ftpUser"];
    $ftpPass = $GLOBALS["ftpPass"];
$conn_id = ftp_connect($servername) or die("<p style=\"color:red\">Error connecting to $servername </p>");

if(ftp_login($conn_id, $ftpUser, $ftpPass))
{
    $dir_handle = @opendir($path) or die("Error opening $path");

         while ($file = readdir($dir_handle)) {
            ftp_put($conn_id, PATH_TO_REMOTE_FILE, $file)
        }
}

Eğer bir kerede yüklenen birden fazla dosya sahip olmak istiyorsanız, size konu veya çatal kullanmak gerekir.

PHP bir Konu implentation emin değilim, ama PHP SPL ve / veya PEAR bir göz atmalısınız

Frank Farmer Edit: Teşekkürler me pcntl_fork() olarak bilinen PHP bir çatal () işlevi olduğunu bildirmek için

Ayrıca, belirli bir dizindeki tüm dosya upload edebilmek için ardışık tüm içerik dizini almak gerekecek.

Ben komut dosyası alt klasörleri ve dosyaları ile tüm klasör yükler, onu kodlu.

Ben size yardımcı olacağını umuyoruz.

<?php 
ob_start(); 
set_time_limit(0); 
//r10.net fatal

$anadizin="uploadedeceginizdizin"; //this is the folder that you want to upload with all subfolder and files of it.

$ftpsunucu="domain.com"; //ftp domain name
$ftpusername="ftpuser";  //ftp user name 
$ftppass="ftppass"; //ftp passowrd
$ftpdizin="/public_html"; //ftp main folder





$arkadaslarlabardaydik = ftp_connect($ftpsunucu); 
$ictikguldukeglendik = ftp_login($arkadaslarlabardaydik, $ftpusername, $ftppass); 

if((!$arkadaslarlabardaydik) || (!$ictikguldukeglendik))  
{ 
  echo "cant connect!"; 
  die(); 
} 


function klasoruoku($dizinadi) 
{ 
  global $nerdeyiz,$fulldizin,$ftpdizin,$arkadaslarlabardaydik,$ftpdizin; 

  chdir($dizinadi."\\"); 
  $dizin = opendir("."); 

  while($bilgi=readdir($dizin))  
  { 
    if ($bilgi!='.' and $bilgi!='..' and $bilgi!="Thumbs.db") 
    {  
        $tamyol="$dizinadi\\$bilgi"; 

        $lokalkla=str_replace("".$nerdeyiz."\\","",$dizinadi).""; 
        $lokaldosya="$lokalkla\\$bilgi"; 
        $ftpyeyolla=str_replace(array("\\\\","\\"),array("/","/"),"$ftpdizin\\".str_replace("".$fulldizin."","",$dizinadi)."\\$bilgi"); 

        if(!is_dir($bilgi)) 
        { 
          $yükleme = ftp_put($arkadaslarlabardaydik, $ftpyeyolla, $tamyol, FTP_BINARY); 

          if (!$yükleme)  
          { 
              echo "$lokaldosya <font color=red>uploaded</font>"; echo "<br>";  fls(); 
          }  
          else  
          { 
              echo "$lokaldosya <font color=green>not uploaded</font>"; echo "<br>"; fls(); 
          } 
        } 
        else 
        {  
          ftp_mkdir($arkadaslarlabardaydik, $ftpyeyolla); 
          klasoruoku("$dizinadi\\$bilgi"); 
          chdir($dizinadi."\\"); 
          fls(); 
        } 
    } 
  } 
  closedir ($dizin); 
} 

function fls() 
{ 
    ob_end_flush(); 
    ob_flush(); 
    flush(); 
    ob_start(); 
} 

$nerdeyiz=getcwd(); 
$fulldizin=$nerdeyiz."\\$anadizin"; 
klasoruoku($fulldizin); 
ftp_close($arkadaslarlabardaydik); 

?>