Nasıl bir FTP sunucusu üzerindeki dosyaları ve klasörleri ayırt edebiliriz

4 Cevap php

Ben PHP kullanarak bir FTP sunucusu üzerindeki tüm dosyaları listelemek istiyorum. RFC 959 FTP komuta göre LIST imkansız doğru dosya türünü belirlemek için yapmak gibi görünüyor dosya / klasörler üzerinde keyfi okunabilir bilgiler, yazdırmak için izin verilir. Ama nasıl diğer FTP istemcileri dosya ve klasörleri ayırt yönetirim? Yazılı olmayan bir standart ya da var mı?

4 Cevap

Komut MLSD denir ve page 23 of RFC 3659 bulunabilir: Sonunda istenilen davranışı uygulayan FTP protokol uzantısı bulundu. Ben varsayılan olarak kullanmak ve bir çare olarak ls -l tarafından iade edilmiş gibi LIST çıkışını ayrıştırmak için çalışacağım.

Ben bir sürü ftp sunucusu bağlıdır düşünüyorum. : Benim üniversite etrafında ftp sunucular aşağıdaki biçimde "ls" komutu için bir çıkış vermek

drwxr-xr-x    2 5609     1510         1896 Oct 31  2007 practice
-rw-r--r--    1 5609     1510          646 Feb 08  2009 prgrm1.c

açıkça prgrm1.c bir dosya ise uygulama, bir dizin olduğunu gösterir.

kullanabilirsiniz ftp_rawlist(). "d" ile başlayan ürün almak, örneğin (dizin anlamına gelir)

$ftp_server="someserver";
$ftp_user_name="someuser";
$ftp_user_pass="somepassword";
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if ((!$conn_id) || (!$login_result)) {
    echo "FTP connection has failed!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name";
    exit;
} else {
    echo "Connected to $ftp_server, for user $ftp_user_name";
    $buff = ftp_rawlist($conn_id, '/');
    $dirs = preg_grep("/^d/",$buff);
    print_r($dirs);

}

neden olmasın dosya / yolu üzerinde CD do? Bir hata oluşursa, bir dosya bulunuyor.