gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:15:18 25 4
gpt4 key购买 nike

我使用此代码访问目录。

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

我想使用 FTP 访问远程路径
$location = opendir('ftp://user:password@host_name/files');
$pictures = glob($location . "*.png");

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

最佳答案

PHP glob function不支持 URL 包装器:

Note: This function will not work on remote files as the file to be examined must be accessible via the server's filesystem.



唯一可靠的方法是列出匹配通配符的文件,是使用 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";
}
}

(这是 glob 无论如何都会在内部做的事情,如果它支持 URL 包装器)

一些(大多数)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 directory partial listing with wildcards 的回答.

关于php - 使用 PHP glob 在 FTP 服务器上列出文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48949352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com