我想打印文件列表,只打印来自FTP服务器的文件,这是我能完成的.
<?php
$ftp_server = "my ftp server";
$conn_id = ftp_connect($ftp_server);
$ftp_user_name = "ftp username";
$ftp_user_pass = "ftp password";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
$contents = ftp_nlist($conn_id, '/');
for ($i = 0 ; $i < count($contents) ; $i++)
echo "<li>" . substr($contents[$i],1) . "</li>";
ftp_close($conn_id);
?>
Run Code Online (Sandbox Code Playgroud)
但这会打印文件和文件夹的名称.我怎样才能打印文件名(文件可能没有扩展名!)
选项:
1)您可以使用ftp_rawlist而不是ftp_nlist获取文件/目录的完整列表,这应该指示它是否是目录.但是,该列表的格式将取决于ftp服务器的操作系统.例如,在unix/linux系统上,原始列表可能如下所示:
drwxrwxr-x 3 jm72 jm72 4096 Nov 2 16:39 myDir
-rw-rw-r-- 1 jm72 jm72 257 Nov 2 16:39 myFile
Run Code Online (Sandbox Code Playgroud)
第一列中的"d"会告诉你它是一个目录.不确定它在Windows服务器上会是什么样子.
2)对于您返回的每个文件名,尝试将CD放入其中.如果可以的话,这是一个目录!
if (ftp_chdir($conn_id, substr($contents[$i],1)) {
//it's a directory, don't include it in your list
ftp_cdup($conn_id) //don't forget to go back up to the directory you started in!
}
Run Code Online (Sandbox Code Playgroud)
这是一个可以为您完成此操作的脚本,由ftp_nlist(PHP 文档)上的海报提供:
<?php
//identify directories
function ftp_is_dir($dir) {
global $ftp_connect;
if (@ftp_chdir($ftp_connect, $dir)) {
ftp_chdir($ftp_connect, '..');
return true;
} else {
return false;
}
}
$ftp_nlist = ftp_nlist($ftp_connect, ".");
//alphabetical sorting
sort($ftp_nlist);
foreach ($ftp_nlist as $v) {
//1. ftp_is_dir() is true => directory
if (ftp_is_dir($v)) {
//output as [ directory ]
echo "[ " . $v . " ]<br />\n";
}
}
foreach ($ftp_nlist as $v) {
//2. ftp_is_dir() is false => file
if (!ftp_is_dir($v)) {
//output as file
echo "" . $v . "<br />\n";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22634 次 |
| 最近记录: |