繁体   English   中英

使用PHP glob在FTP服务器上列出文件不起作用

[英]Listing files on FTP server using PHP glob is not working

我用这段代码来访问目录。

$location = 'files/';
$pictures = glob($location . "*.png");

我想使用FTP访问远程路径

$location = opendir('ftp://user:password@host_name/files');
$pictures = glob($location . "*.png");

我的FTP目录访问代码无法正常工作。

PHP glob函数不支持URL包装器:

注意:此功能不适用于远程文件,因为必须可以通过服务器的文件系统访问要检查的文件。


唯一可靠的方法是列出与通配符匹配的文件,是使用PHP FTP函数列出所有文件并在本地过滤它们:

$conn_id = ftp_connect("ftp.example.com") or die("Cannot connect");
ftp_login($conn_id, "username", "password") or die("Cannot login");
ftp_pasv($conn_id, true) or die("Cannot change to passive mode");

$files = ftp_nlist($conn_id, "/path");

foreach ($files as $file)
{
    if (preg_match("/\.png$/i", $file))
    {
        echo "Found $file\n";
    }
}

(如果它支持URL包装器,这就是glob内部做的事情)


一些(大多数)FTP服务器允许您直接使用通配符:

$conn_id = ftp_connect("ftp.example.com") or die("Cannot connect");
ftp_login($conn_id, "username", "password") or die("Cannot login");
ftp_pasv($conn_id, true) or die("Cannot change to passive mode");

$files = ftp_nlist($conn_id, "/path/*.png");

foreach ($files as $file)
{
    echo "Found $file\n";
}

但这是一个非标准的功能(虽然得到广泛支持)。

有关详细信息,请参阅我对带有通配符的FTP目录部分列表的回答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM