php – 使用一个连接读取FTP目录中每个文件的内容

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 使用一个连接读取FTP目录中每个文件的内容脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我的目标是连接到FTP帐户,读取特定文件夹中的文件,抓取内容并列出到我的屏幕.

这就是我所拥有的:

// set up basic connection
$conn_id = ftp_connect('HOST_ADDRESS');

// lo@R_406_2848@ wITh username and password
$LOGin_result = ftp_login($conn_id,'USERNAME','PASSWORD');

if (!$login_result)
{
    exit();
}

// get contents of the current directory
$contents = ftp_nlist($conn_id,"DirectoryName");

$files = [];

foreach ($contents AS $content)
{
    $ignoreArray = ['.','..'];
    if ( ! in_array( $content,$ignoreArray) )
    {
        $files[] = $content;
    }
}

上面的工作很好,以获取我需要从中获取内容文件名.接下来,我想通过文件名数组进行递归,并将内容存储到变量中以便进一步处理.

我不知道如何做到一点,我想它会需要像这样:

foreach ($files AS $file )
{
    $handle = foPEn($filename,"r");
    $contents = fread($conn_id,filesize($file));
    $content[$file] = $contents;
}

上面的想法来自这里:
PHP: How do I read a .txt file from FTP server into a variable?

虽然我不喜欢每次都要连接以获取文件内容的想法,但是我更喜欢在初始实例上进行连接.

解决方法

为避免必须为每个文件连接/登录,请使用 ftp_get并重用您的连接ID($conn_id):

foreach ($files as $file)
{
    // Full path to a remote file
    $remote_path = "DirectoryName/$file";
    // Path to a temporary local copy of the remote file
    $temp_path = tempnam(Sys_get_temp_dir(),"ftp");
    // Temporarily download the file
    ftp_get($conn_id,$temp_path,$remote_path,FTP_BINARY);
    // Read the contents of temporary copy
    $contents = file_get_contents($temp_path);
    $content[$file] = $contents;
    // Discard the temporary copy
    unlink($temp_path);
}

(您应该添加一些错误检查.)

脚本宝典总结

以上是脚本宝典为你收集整理的php – 使用一个连接读取FTP目录中每个文件的内容全部内容,希望文章能够帮你解决php – 使用一个连接读取FTP目录中每个文件的内容所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。