php - 使用 phpseclib nlist 从后缀/扩展名过滤的 SFTP 文件夹中获取文件

标签 php sftp phpseclib

我需要从 SFTP 服务器获取文件,但我只需要扩展名为 txt 的文件。如果我循环结果并在本地使用 PHP 进行过滤,则需要花费太多时间。我如何使用 nlist 做到这一点?

我的代码是:

$timeout_sftp = 30; 
$ls_directory = $sftp->nlist($sftp_path, false, $timeout_sftp);

最佳答案

SFTP 不允许过滤文件(协议(protocol)本身,它不是 PHP 中 SFTP 实现的限制)。

所以你所能做的就是检索整个目录的列表并在本地过滤它们。

$files = $sftp->nlist($sftp_path);

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

当然,您可以使用 SSH“exec” channel 在服务器上执行 ls *.txt。但这不再是 SFTP 解决方案,您需要具有对服务器的 shell 访问权限。

$filelist = $ssh->exec("ls *.txt");

关于php - 使用 phpseclib nlist 从后缀/扩展名过滤的 SFTP 文件夹中获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49192617/

相关文章:

javascript - 如何从 firebase 在 Accelerated Mobile Pages(AMP) 中显示数据

php - 使用 PHP 在 while 循环中插入数据(仅 1 次)

java - 具有多个文件夹的 Sftp OutboundAdapter

php - 使用 phpseclib AES 加密字符串

php - 如何跳过有关使用 Maatwebsite/Laravel-Excel 导入 excel laravel 的行

php - 如何为fopen()中的错误文件路径在PHPUnit中设置预期的异常?

ruby-on-rails - ruby sftp 错误

ruby-on-rails - 如果目录已经存在,则在 Ruby 上通过 SFTP 创建目录失败

php - 如何将 phpseclib 的 CRYPT_RSA_SIGNATURE_PKCS1 转换为 Node

php - 如何使用 PHPseclib 更改目录并运行 git 命令?