如何区分FTP服务器上的文件和文件夹

时间:2010-03-03 12:31:02

标签: php ftp

我想使用PHP列出FTP服务器上的所有文件。根据{{​​3}},允许FTP命令LIST在文件/文件夹上打印任意人类可读信息,这似乎无法正确确定文件类型。但其他FTP客户端如何管理区分文件和文件夹?有不成文的标准吗?

4 个答案:

答案 0 :(得分:1)

我终于找到了FTP协议的扩展,它实现了所需的行为:该命令被称为MLSD,可以在page 23 of RFC 3659找到。我会将其作为默认值使用,并尝试解析LIST的输出,就像ls -l作为后备返回一样。

答案 1 :(得分:0)

我认为很大程度上取决于ftp服务器。我学院周围的ftp服务器按以下格式输出“ls”命令:

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

清楚地表明,practice是一个目录,而prgrm1.c是一个文件。

答案 2 :(得分:0)

您可以使用ftp_rawlist()。获取以“d”开头的项目(指目录),例如

$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);

}

答案 3 :(得分:-1)

为什么不在文件/路径上执行CD?如果发生错误,则为文件。