Daha önce anlatmaya başladığım FTP kütüphanesini genişletme konulu yazımın ikinci bölümünde, sunucu üzerinde dosya kopyalamayı anlatacağım.
FTP kütüphanesi ile sunucu üzerinde bir yere aldığımız dosyaları bazen sunucu üzerinde farklı yerlere taşıma ihtiyacı duyarız. Genelde dokümanların güvenli dizinlerden alınarak (internet erişimine kapalı dizinlerden) geçici dizinler altına kopyalanması sırasında bu fonksiyona ihtiyaç duyarız.
Ancak CodeIgniter FTP kütüphanesinde dosya kopyalama fonksiyonu olmadığı için genişlettiğimiz kütüphanemize (application/libraries/MY_Ftp.php dosyasına) aşağıdaki kodları ekliyoruz.
function copy($source, $destination, $mode = 'auto')
{
if ( ! $this->_is_conn())
{
return FALSE;
}
$handle = fopen($destination, 'w');
$result = ftp_nb_fget($this->conn_id, $handle, $source, $mode);
while ($result == FTP_MOREDATA)
{
$result = ftp_nb_continue($this->conn_id);
}
if ($result != FTP_FINISHED)
{
if ($this->debug == TRUE)
{
$this->_error('ftp_unable_to_download');
}
return FALSE;
}
return TRUE;
}
Fonksiyonumuzu controller dosyasından çağıracağımız zaman şunlara dikkat etmemiz gereklidir:
//sunucu üzerindeki kopyalayacağımız kaynak dosyamız $source = 'public_html/dosya.txt'; //nereye kopyalayacaksak onu belirtiyoruz $destination = realpath($_SERVER['DOCUMENT_ROOT']).'/dizin1/dizin2/yeni_isim.txt'; //ve çalıştırıyoruz $this->ftp->copy($source,$destination);
Bu fonksiyonu kullanırken dosyayı yazdıracağımız dizinin (örnek kod içinde geçen /dizin1/dizin2) yazma izinlerinin 775 olarak işaretli olmasına (chmod 775) dikkat ediyoruz. Ayrıca, $destination değişkeninin gerçek dizin değerine (realpath($_SERVER['DOCUMENT_ROOT']))sahip olması gereklidir.
Yazarı : Fatih BAZMAN | Yorum Ekle | Etiketler : FTP MY_ftp kopyalama
Türkiye