I want to print the list of files and only files from an FTP server, here is what I could accomplish.
<?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);
?>
but this prints the names of files and folders. How can I just print the names of files (files may not have extensions!)
Here is a script that will do it for you, courtesy of a poster on ftp_nlist (PHP Docs):
<?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";
}
}
?>
Options:
1) you can use ftp_rawlist
instead of ftp_nlist
to get the full listing for the file/directory, which should indicate whether it's a directory. However, the format of that listing will depend on the operating system of the ftp server. For example, on a unix/linux system the raw listing might look something like this:
drwxrwxr-x 3 jm72 jm72 4096 Nov 2 16:39 myDir
-rw-rw-r-- 1 jm72 jm72 257 Nov 2 16:39 myFile
where the "d" in the first column will tell you it's a directory. Not sure what it would look like on a Windows server.
2) for each file name you return, try to CD into it. If you can, it's a directory!
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!
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With