您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > php

PHP 如何获取Ftp服务器上文件

时间:2023-01-10 14:41:42  来源:今日头条  作者:小危95

如何获取Ftp服务器上的文件

  • 可以通过账号密码,使用Xftp进行链接

 

XFtp连接

  • 通过代码获取,本文主要是通过php代码获取Ftp上的文件,并且去重。

    private $hostname    = ''; \地址
    private $username    = '';  
    private $password    = '';
    private $port        = 21;
    private $conn_id     = FALSE;
     /**
     * FTP登陆
     *
     * @access  private
     * @return boolean
     */
    private function _login()
    {
        return @ftp_login($this->conn_id, $this->username, $this->password);
    }
    
      /**
     * 关闭FTP
     *
     * @access  public
     * @return boolean
     */
    public function close()
    {
        if (!$this->_isconn()) {
            return FALSE;
        }

        return @ftp_close($this->conn_id);
    }
    
      /**
     * 判断con_id
     *
     * @access  private
     * @return boolean
     */
    private function _isconn()
    {
        if (!is_resource($this->conn_id)) {
            if ($this->debug === TRUE) {
                $this->_error("ftp_no_connection");
            }
            return FALSE;
        }
        return TRUE;
    }
    
    /**
     * 下载
     *
     * @access  public
     * @param  string  远程目录标识(ftp)
     * @param string 本地目录标识
     * @param string 下载模式 auto || ascii 
     * @return boolean
     */
    public function download($remotepath, $localpath, $mode = 'auto')
    {
        if (!$this->_isconn()) {
            return FALSE;
        }
        $mode = ($mode == 'ascii') ? FTP_ASCII : FTP_BINARY;

        $result = @ftp_get($this->conn_id, $localpath, $remotepath, $mode);

        if ($result === FALSE) {
            if ($this->debug === TRUE) {
                $this->_error("ftp_unable_to_download:localpath[" . $localpath . "]-remotepath[" . $remotepath . "]");
            }
            return FALSE;
        }
        return TRUE;
    }
    
     /**
     * 获取目录文件列表
     *
     * @access  public
     * @param  string  目录标识(ftp)
     * @return array
     */
    public function filelist($path = '.')
    {
        if (!$this->_isconn()) {
            return FALSE;
        }
        return ftp_nlist($this->conn_id, $path);
    }
    

以上是ftp一些基础操作,连接,获取文件列表,下载文件,需要获取代码可以私信我获取,

接下来需要进行获取文件操作,并且去除重复的

  1. 获取本地文件
  2. 获取远程文件
  3. 对比本地没有的文件并且下载
  4. 对下载的文件进行相关操作
    /**
     * 获取远程文件列表
     */
    private function getRemoteFileList($path, $config)
    {
        $this->ftp = new Ftp($config);
        $res = $this->ftp->connect($config);
        if ($res) {
            $fileArr = array();
            $list = $this->listFtpDir($path, $fileArr);
            $this->ftp->close();
            return $list;
        }
        return false;
    }

    private function listFtpDir($dir, &$fileArr)
    {
        $data = $this->ftp->filelist($dir);
        if (!is_array($data)) {
            return;
        }
        foreach ($data as $value) {
            if ($this->is_json_file($value)) {
                $fileArr[] = $value;
            } else {
                $this->listFtpDir($value, $fileArr);
            }
        }
        return $fileArr;
    }
    
     public function file($dataDir)
    {
        //获取本地文件列表
        $localFileList = $this->getBrLocalFileList($dataDir, 'FLIE/');
        if (count($localFileList) > 0) {
            foreach ($localFileList as $key => $value) {
                $localFileList[$key] = str_replace(self::FTP_FILE_DIR, '', $value);
            }
        }
        //获取远程文件列表
        $remoteFileList = $this->getBrRemoteFileList($dataDir, 'FLIE');
        //获取本地没有的文件列表
        $remoteArr = array();
        if (count($localFileList) > 0) {
            foreach ($remoteFileList as $key => $value) {
                if (!in_array($value, $localFileList)) {
                    $remoteArr[] = $value;
                }
            }
        } else {
            $remoteArr = $remoteFileList;
        }
        //下载文件,对于本地有的不会进行二次下载,上面方法已经过滤
        然后对文件需要的操作,
        
    }
  
    /**
     * 下载远程文件
     */
    private function downRemote2LocalWget($localFtpDir, $list, $config)
    {
        $this->ftp = new ftp($config);
        $this->ftp->connect();
        foreach ($list as $value) {
            $dir = $localFtpDir . '/' . substr($value, 0, strripos($value, '/'));
            if (!is_dir($dir)) mkdir($dir, 0777, true);
            //本地存在则删除
            if (is_file($localFtpDir . '/' . $value)) {
                unlink($localFtpDir . '/' . $value);
            }
            if (!is_file($localFtpDir . '/' . $value)) {
                $filesize = $this->ftp->ftpfilesize($value);
                if (!$filesize) {
                    echo '服务端文件为空!' . "n";
                } else {
                    $re = $this->ftp->download($value, $dir . '/' . substr($value, strripos($value, '/') + 1, strlen($value) - 1));
                    if ($re) {
                        echo '下载' . $value . '成功!' . "n";
                    } else {
                        echo '下载' . $value . '失败!' . "n";
                    }
                }
            }
        }
        $this->ftp->close();
    }
    

上面是FTP下载文件一些基本操作,只贴了部分代码。如有出入,可以后台联系我,欢迎指正。



Tags:PHP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
PHP 8.3 新特性解读
作者 | Deepak Vohra译者 | 明知山策划 | 丁晓昀本文是 PHP 8.x 系列文章的一部分。你可以通过订阅 RSS 来接收有关本系列文章的更新通知。PHP 仍然是互联网上使用最广泛的...【详细内容】
2024-03-12  Search: PHP  点击:(26)  评论:(0)  加入收藏
如何使用PHP SSH2模块执行远程Linux命令
PHP SSH2扩展是用于在PHP程序中使用SSH(安全壳协议)的一种扩展。它允许建立加密连接和执行远程命令、上传和下载文件等操作,十分方便实用。下面我将为大家详细介绍一下该扩展的...【详细内容】
2024-01-26  Search: PHP  点击:(104)  评论:(0)  加入收藏
2023 年,PHP 停滞不前
热心开发者分析了一波 GitHub 的数据后发现,编程语言为 PHP 的 PR 数量逐年下降。GitHut 是通过 GitHub 数据专门分析编程语言的项目。它基于各种编程语言在 GitHub 中的使用...【详细内容】
2023-12-17  Search: PHP  点击:(17)  评论:(0)  加入收藏
PHP 8.3 正式发布!
作者 | Tim Anderson编译 | 如烟出品 | 51CTO技术栈(微信号:blog51cto)PHP 8.3 正式发布,最主要的变化是添加“类常量显式类型”、“只读属性深拷贝”,“以及对随机性功能的补充...【详细内容】
2023-11-27  Search: PHP  点击:(169)  评论:(0)  加入收藏
原来真的可以在 Next.js 中写 PHP 代码?
Next.js 14 近期发布,其中一个重大的功能点是 Server Actions 成为稳定版,因其超前和熟悉的开发方式,在社交网络上引起了一阵讨论,应该是下面这张图的内容了。图片有人说这是又...【详细内容】
2023-11-07  Search: PHP  点击:(297)  评论:(0)  加入收藏
如何通过 IP 限制对 WordPress 中 wp-login.php 文件的访问
您想通过 IP 地址限制对 WordPress 中 wp-login.php 文件的访问吗?WordPress 登录页面经常受到 DDoS 攻击和黑客攻击以获取对您网站的访问权限。限制对特定 IP 地址的访问可...【详细内容】
2023-07-27  Search: PHP  点击:(117)  评论:(0)  加入收藏
PHP 如何使用函数实现类型转换
PHP 中有多种类型转换函数和强制类型转换方式,开发者可以根据具体需求来选择不同的方式进行类型转换。另外,在进行类型转换时,要考虑到变量的类型、数据精度和可能产生的错误。...【详细内容】
2023-03-20  Search: PHP  点击:(186)  评论:(0)  加入收藏
Web 集群如何共享 Html Php 程序
Web 集群是指一组独立的服务器,它们通过某种方式协同工作来提供对外服务。在 Web 应用程序中,多台服务器通常会被组织成一个集群,以提高应用程序的性能和可用性。在这个集群中...【详细内容】
2023-03-13  Search: PHP  点击:(116)  评论:(0)  加入收藏
PHP 如何获取Ftp服务器上文件
如何获取Ftp服务器上的文件 可以通过账号密码,使用Xftp进行链接 XFtp连接 通过代码获取,本文主要是通过php代码获取Ftp上的文件,并且去重。 private $hostname = '&...【详细内容】
2023-01-10  Search: PHP  点击:(257)  评论:(0)  加入收藏
Php 的活动框架简介
php(2 部分系列) 1我用 50 行代码写了 twig2php的活动框架 docker-compose.yml此配置仅包含一个服务并公开一个端口以通过浏览器访问容器。这个文件就不用多说了。 version: &...【详细内容】
2022-09-26  Search: PHP  点击:(339)  评论:(0)  加入收藏
▌简易百科推荐
PHP 8.3 新特性解读
作者 | Deepak Vohra译者 | 明知山策划 | 丁晓昀本文是 PHP 8.x 系列文章的一部分。你可以通过订阅 RSS 来接收有关本系列文章的更新通知。PHP 仍然是互联网上使用最广泛的...【详细内容】
2024-03-12    InfoQ  Tags:PHP 8.3   点击:(26)  评论:(0)  加入收藏
如何使用PHP SSH2模块执行远程Linux命令
PHP SSH2扩展是用于在PHP程序中使用SSH(安全壳协议)的一种扩展。它允许建立加密连接和执行远程命令、上传和下载文件等操作,十分方便实用。下面我将为大家详细介绍一下该扩展的...【详细内容】
2024-01-26  开源技术小栈  微信公众号  Tags:PHP   点击:(104)  评论:(0)  加入收藏
如何使用PHP抓取百度首页排名?方法与步骤详解
PHP是一种广泛应用于网站开发的脚本语言,具备简单、灵活、高效的特点,因此在SEO优化中也得到了广泛的应用。本文将深入解析如何使用PHP抓取百度首页排名,并介绍一些相关的内容...【详细内容】
2024-01-12  ·小钟无艳遇  今日头条  Tags:php   点击:(82)  评论:(0)  加入收藏
2023 年,PHP 停滞不前
热心开发者分析了一波 GitHub 的数据后发现,编程语言为 PHP 的 PR 数量逐年下降。GitHut 是通过 GitHub 数据专门分析编程语言的项目。它基于各种编程语言在 GitHub 中的使用...【详细内容】
2023-12-17  OSC开源社区    Tags:PHP   点击:(17)  评论:(0)  加入收藏
全方位深度剖析PHP7底层源码
PHP7是一门流行的Web编程语言,以其易学易用和广泛的应用场景而备受欢迎。本文将为您深入讲解PHP7的特性和优势,包括性能提升、语法改进和新特性等方面,帮助您了解和掌握这门灵...【详细内容】
2023-12-06  笔画春秋润    Tags:PHP7   点击:(185)  评论:(0)  加入收藏
PHP 8.3 正式发布!
作者 | Tim Anderson编译 | 如烟出品 | 51CTO技术栈(微信号:blog51cto)PHP 8.3 正式发布,最主要的变化是添加“类常量显式类型”、“只读属性深拷贝”,“以及对随机性功能的补充...【详细内容】
2023-11-27    51CTO  Tags:PHP   点击:(169)  评论:(0)  加入收藏
原来真的可以在 Next.js 中写 PHP 代码?
Next.js 14 近期发布,其中一个重大的功能点是 Server Actions 成为稳定版,因其超前和熟悉的开发方式,在社交网络上引起了一阵讨论,应该是下面这张图的内容了。图片有人说这是又...【详细内容】
2023-11-07  编程界  微信公众号  Tags:PHP   点击:(297)  评论:(0)  加入收藏
PHP编程语言,这个老古董,还有人用吗?
近年来,随着大数据、云计算和人工智能等新兴技术的崛起,许多传统的编程语言悄然退出了舞台。而PHP(PHP Hypertext Preprocessor)作为最古老的编程语言之一,是否也在逐渐沦为过去...【详细内容】
2023-11-02  程序员职场故事    Tags:PHP编程   点击:(235)  评论:(0)  加入收藏
PHP如何获取前几天日期时间
在PHP中,我们经常需要获取当前日期的前几天日期时间,以便进行一些特定的计算或数据处理。本文将介绍如何使用PHP获取前几天的日期时间,并提供具体的实现示例和代码。文章地址ht...【详细内容】
2023-08-10  学无止境    Tags:PHP   点击:(380)  评论:(0)  加入收藏
PHP+Python轻松抓取网络图片资源
你是否曾经遇到过需要从网络上获取大量图片的需求?你是否曾经为手动下载图片而感到疲惫?那么,本文将为你介绍一种高效、易用的方法——利用PHP和Python编写爬虫程序,...【详细内容】
2023-05-09  俊俊的生活日记    Tags:PHP   点击:(337)  评论:(0)  加入收藏
站内最新
站内热门
站内头条