php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)

php使用ftp实现文件上传代码片段:

<?php
  /**
   * ftp上传文件类
   */
  class Ftp { 

    /**
     * 测试服务器
     *
     * @var array
     */
    private $testServer = array(
      'host' => 'ip',
      'port' => 21,
      'user' => 'userName',
      'pwd' => 'password'
    ); 

    /**
     * 打开并登录服务器
     *
     * @param string $flag 服务器标识test
     * @return mixed
     *       0:服务器连接失败
     *       1:服务器登录失败
     *       resource 连接标识
     */
    public function openServer($flag = 'test'){
      //选择服务器
      $config = $this->getServerConfig($flag); 

      //连接服务器
      $connect = ftp_connect($config['host'], $config['port']);
      if($connect == false) return 0; 

      //登录服务器
      if(!ftp_login($connect, $config['user'], $config['pwd'])) return 1; 

      //打开被动模式,数据的传送由客户机启动,而不是由服务器开始
      ftp_pasv($connect, true); 

      //返回连接标识
      return $connect;
    } 

    /**
     * 创建目录并将目录定位到当请目录
     *
     * @param resource $connect 连接标识
     * @param string $dirPath 目录路径
     * @return mixed
     *       2:创建目录失败
     *       true:创建目录成功
     */
    public function makeDir($connect, $dirPath){
      //处理目录
      $dirPath = '/' . trim($dirPath, '/');
      $dirPath = explode('/', $dirPath);
      foreach ($dirPath as $dir){
        if($dir == '') $dir = '/';
        //判断目录是否存在
        if(@ftp_chdir($connect, $dir) == false){
          //判断目录是否创建成功
          if(@ftp_mkDir($connect, $dir) == false){
            return 2;
          }
          @ftp_chdir($connect, $dir);
        }
      }
      return true;
    } 

    /**
     * 关闭服务器
     *
     * @param resource $connect 连接标识
     */
    public function closeServer($connect){
      if(!empty($connect)) ftp_close($connect);
    } 

    /**
     * 上传文件
     *
     * @param string $flag 服务器标识
     * @param string $local 上传文件的本地路径
     * @param string $remote 上传文件的远程路径
     * @return int
     *       0:服务器连接失败
     *       1:服务器登录失败
     *       2:创建目录失败
     *       3:上传文件失败
     *       4:上传成功
     */
    public function upload($flag = 'test', $local, $remote){
      //连接并登录服务器
      $connect = $this->openServer($flag);
      if(($connect === 0) || ($connect === 1)) return $connect; 

      //上传文件目录处理
      $mdr = $this->makeDir($connect, dirname($remote));
      if($mdr === 2) return 2; 

      //上传文件
      $result = ftp_put($connect, basename($remote), $local, FTP_BINARY); 

      //关闭服务器
      $this->closeServer($connect); 

      //返回结果
      return (!$result) ? 3 : 4;
    } 

    /**
     * 删除文件
     *
     * @param string $flag 服务器标识
     * @param string $remote 文件的远程路径
     * @return int
     *       0:服务器连接失败
     *       1:服务器登录失败
     *       2:删除失败
     *       3:删除成功
     */
    public function delete($flag = 'test', $remote){
      //连接并登录服务器
      $connect = $this->openServer($flag);
      if(($connect === 0) || ($connect === 1)) return $connect; 

      //删除
      $result = ftp_delete($connect, $remote); 

      //关闭服务器
      $this->closeServer($connect); 

      //返回结果
      return (!$result) ? 2 : 3;
    } 

    /**
     * 读取文件
     *
     * @param string $flag 服务器标识
     * @param string $remote 文件的远程路径
     * @return mixed
     *       0:服务器连接失败
     *       1:服务器登录失败
     */
    public function read($flag, $remote){
      //连接并登录服务器
      $connect = $this->openServer($flag);
      if(($connect === 0) || ($connect === 1)) return $connect; 

      //读取
      $result = ftp_nlist($connect, $remote); 

      //关闭服务器
      $this->closeServer($connect); 

      //返回结果
      foreach ($result as $key => $value){
        if(in_array($value, array('.', '..'))) unset($result[$key]);
      }
      return array_values($result);
    } 

    /**
     * 获取ftp服务器配置
     *
     * @param string $flag 服务器标识test
     * @return array ftp服务器连接配置
     */
    private function getServerConfig($flag = 'test'){
      $flag = strtolower($flag);
      //测试服务器
      if($flag == 'test') return $this->testServer;
      //默认返回测试服务器
      return $this->testServer;
    }
  }
  ?>

以上就是小编为大家带来的php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)的全部内容了,希望对大家有所帮助,多多支持我们~

(0)

相关推荐

  • php使用curl实现ftp文件下载功能

    本文实例为大家分享了php实现ftp文件下载功能,供大家参考,具体内容如下 不知道为什么用正常的ftp_get函数下载文件速度特别慢,但是用ftp的客户端下载很快,所以换了curl的下载方式,速度正常 function file_upload($ftpIp,$ftpUser,$ftpPwd,$path,$fileSavePath){ $curlobj = curl_init();//初始化 //传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg' curl_set

  • PHP操作FTP类 (上传、下载、移动、创建等)

    本文针对PHP操作FTP类进行详细介绍,php实现FTP上传.FTP下载.FTP移动.FTP创建等,供大家参考,具体内容如下 1.使用PHP操作FTP-用法 <?php // 联接FTP服务器 $conn = ftp_connect(ftp.server.com); // 使用username和password登录 ftp_login($conn, "john", "doe"); // 获取远端系统类型 ftp_systype($conn); // 列示文件

  • php下连接ftp实现文件的上传、下载、删除文件实例代码

    php ftp传送文件到服务器 复制代码 代码如下: <?php // 开始 $ret = ftp_nb_get ($my_connection, "test", "README", FTP_BINARY, filesize("test")); // 或: $ret = ftp_nb_get ($my_connection, "test", "README", // FTP_BINARY, FTP_A

  • php实现通过ftp上传文件

    大概原理 遍历项目中的所有非排除文件,然后获取 文件修改时间晚于文件上一次修改时间 的文件 然后将这些文件,通过ftp上传到对应的目录 具体代码如下: 因为只是工具,代码很乱,见谅 <?php error_reporting(7); if ($_SERVER['SERVER_ADDR'])exit;//禁止在web服务器下运行 $_GET['exclude'] = array('number.txt','uploads','Zend','docs','cache','You','managesd

  • PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)

    复制代码 代码如下: <?php/*** 作用:FTP操作类( 拷贝.移动.删除文件/创建目录 )* 时间:2006/5/9* 作者:欣然随风* QQ:276624915*/class class_ftp{    public $off; // 返回操作状态(成功/失败)    public $conn_id; // FTP连接    /**     * 方法:FTP连接     * @FTP_HOST -- FTP主机     * @FTP_PORT -- 端口     * @FTP_USER

  • PHP实现ftp上传文件示例

    FTP上传是PHP实现的一个常见且非常重要的应用技巧,今天就来与大家分享一下PHP实现FTP上传文件的简单示例.希望对大家的PHP学习能带来一定的帮助. 主要代码如下: function make_directory($ftp_stream, $dir){ // if directory already exists or can be immediately created return true if ($this->ftp_is_dir($ftp_stream, $dir) || @ftp

  • php使用ftp实现文件上传与下载功能

    本文实例为大家分享了php ftp文件上传与下载的具体代码,供大家参考,具体内容如下 ftp文件上传 php自带有ftp操作的函数包,一个比较简单实现的ftp文件上传操作可以通过以下几个步骤来完成: 1.确认ftp server的ip地址与port端口信息(如果使用的是默认端口则可以不关心): 2.进行ftp_connect操作,连接到ftp server(需要注意一下是否设置了port参数): 3.进行ftp_login操作,使用ftp用户名和密码进行登录: 4.这里开始区分,如果只需要把文件

  • php ftp文件上传函数(基础版)

    复制代码 代码如下: <?php // 定义变量 $local_file = 'local.zip'; $server_file = 'server.zip'; // 连接FTP服务器 $conn_id = ftp_connect($ftp_server); //验证登录服务器 $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // 下载文件 if (ftp_get($conn_id, $local_file

  • PHP用FTP类上传文件视频等的简单实现方法

    文件1:ftp.php <?php /** * 仿写CodeIgniter的FTP类 * FTP基本操作: * 1) 登陆; connect * 2) 当前目录文件列表; filelist * 3) 目录改变; chgdir * 4) 重命名/移动; rename * 5) 创建文件夹; mkdir * 6) 删除; delete_dir/delete_file * 7) 上传; upload * 8) 下载 download * * @author quanshuidingdang */ cl

  • php实现curl模拟ftp上传的方法

    本文实例讲述了php实现curl模拟ftp上传的方法.分享给大家供大家参考.具体如下: <?php function upload($dir,$src,$dest) { $ch = curl_init(); $fp = fopen($src, 'r'); curl_setopt($ch, CURLOPT_URL, 'ftp://user:pwd@host/interpretation/'.$dir .'/'. $dest); curl_setopt($ch, CURLOPT_UPLOAD, 1)

随机推荐