我想使用PHP列出FTP服务器上的所有文件。根据{{3}},允许FTP命令LIST
在文件/文件夹上打印任意人类可读信息,这似乎无法正确确定文件类型。但其他FTP客户端如何管理区分文件和文件夹?有不成文的标准吗?
答案 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
?如果发生错误,则为文件。