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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

PHP使用ftP实文件上传代码片段:

<PRe class="brush:PHp;">
/**
 * 测试服务器
 * 
 * @VAR array
 */ 
private $testServer = array( 
  'host' => 'ip','port' => 21,'user' => 'userName','pwd' => 'password' 
); 

/**
 * 打开并<a href="https://www.js-code.COM/tag/denglu/" target="_blank" class="keywords">登录</a>服务器
 * 
 * @param string $flag 服务器标识test
 * @return mixed 
 *       0:服务器连接失败
 *       1:服务器<a href="https://www.js-code.com/tag/denglu/" target="_blank" class="keywords">登录</a>失败
 *       resource 连接标识
 */ 
public function oPEnServer($flag = 'test'){ 
  //选择服务器 
  $con<a href="https://www.js-code.com/tag/fig/" target="_blank" class="keywords">fig</a> = $this->getServerCon<a href="https://www.js-code.com/tag/fig/" target="_blank" class="keywords">fig</a>($flag); 

  //连接服务器 
  $connect = ftp_connect($con<a href="https://www.js-code.com/tag/fig/" target="_blank" class="keywords">fig</a>['host'],$con<a href="https://www.js-code.com/tag/fig/" target="_blank" class="keywords">fig</a>['port']); 
  if($connect == false) return 0; 

  //<a href="https://www.js-code.com/tag/denglu/" target="_blank" class="keywords">登录</a>服务器 
  if(!ftp_login($connect,$con<a href="https://www.js-code.com/tag/fig/" target="_blank" class="keywords">fig</a>['user'],$con<a href="https://www.js-code.com/tag/fig/" target="_blank" class="keywords">fig</a>['pwd'])) return 1; 

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

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

/**
 * 创建目录并将目录定位到当请目录
 * 
 * @param resource $connect 连接标识
 * @param string $dirPath <a href="https://www.js-code.com/tag/mululujing/" target="_blank" class="keywords">目录路径</a>
 * @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; 
} 

/**
 * <a href="https://www.js-code.com/tag/guanbi/" target="_blank" class="keywords">关闭</a>服务器
 * 
 * @param resource $connect 连接标识
 */ 
public function closeServer($connect){ 
  if(!empty($connect)) ftp_close($connect); 
} 

/**
 * <a href="https://www.js-code.com/tag/shangchuan/" target="_blank" class="keywords">上传</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>
 * 
 * @param string $flag 服务器标识
 * @param string $local <a href="https://www.js-code.com/tag/shangchuan/" target="_blank" class="keywords">上传</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>的本地路径
 * @param string $remote <a href="https://www.js-code.com/tag/shangchuan/" target="_blank" class="keywords">上传</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>的远程路径
 * @return int 
 *       0:服务器连接失败 
 *       1:服务器<a href="https://www.js-code.com/tag/denglu/" target="_blank" class="keywords">登录</a>失败
 *       2:创建目录失败
 *       3:<a href="https://www.js-code.com/tag/shangchuan/" target="_blank" class="keywords">上传</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>失败
 *       4:<a href="https://www.js-code.com/tag/shangchuan/" target="_blank" class="keywords">上传</a>成功
 */ 
public function upload($flag = 'test',$local,$remote){ 
  //连接并<a href="https://www.js-code.com/tag/denglu/" target="_blank" class="keywords">登录</a>服务器 
  $connect = $this->openServer($flag); 
  if(($connect === 0) || ($connect === 1)) return $connect; 

  //<a href="https://www.js-code.com/tag/shangchuan/" target="_blank" class="keywords">上传</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>目录处理 
  $mdr = $this->;makeDir($connect,dirname($remote)); 
  if($mdr === 2) return 2; 

  //<a href="https://www.js-code.com/tag/shangchuan/" target="_blank" class="keywords">上传</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a> 
  $result = ftp_put($connect,basename($remote),FTP_BINARY); 

  //<a href="https://www.js-code.com/tag/guanbi/" target="_blank" class="keywords">关闭</a>服务器 
  $this->closeServer($connect); 

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

/**
 * <a href="https://www.js-code.com/tag/shanchu/" target="_blank" class="keywords">删除</a><a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>
 * 
 * @param string $flag 服务器标识
 * @param string $remote <a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>的远程路径
 * @return int 
 *       0:服务器连接失败 
 *       1:服务器<a href="https://www.js-code.com/tag/denglu/" target="_blank" class="keywords">登录</a>失败
 *       2:<a href="https://www.js-code.com/tag/shanchu/" target="_blank" class="keywords">删除</a>失败
 *       3:<a href="https://www.js-code.com/tag/shanchu/" target="_blank" class="keywords">删除</a>成功
 */ 
public function delete($flag = 'test',$remote){ 
  //连接并<a href="https://www.js-code.com/tag/denglu/" target="_blank" class="keywords">登录</a>服务器 
  $connect = $this->openServer($flag); 
  if(($connect === 0) || ($connect === 1)) return $connect; 

  //<a href="https://www.js-code.com/tag/shanchu/" target="_blank" class="keywords">删除</a> 
  $result = ftp_delete($connect,$remote); 

  //<a href="https://www.js-code.com/tag/guanbi/" target="_blank" class="keywords">关闭</a>服务器 
  $this->closeServer($connect); 

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

/**
 * 读取<a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>
 * 
 * @param string $flag 服务器标识
 * @param string $remote <a href="https://www.js-code.com/tag/wenjian/" target="_blank" class="keywords">文件</a>的远程路径
 * @return mixed 
 *       0:服务器连接失败 
 *       1:服务器<a href="https://www.js-code.com/tag/denglu/" target="_blank" class="keywords">登录</a>失败
 */ 
public function read($flag,$remote){ 
  //连接并<a href="https://www.js-code.com/tag/denglu/" target="_blank" class="keywords">登录</a>服务器 
  $connect = $this->openServer($flag); 
  if(($connect === 0) || ($connect === 1)) return $connect; 

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

  //<a href="https://www.js-code.com/tag/guanbi/" target="_blank" class="keywords">关闭</a>服务器 
  $this->closeServer($connect); 

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

/**
 * <a href="https://www.js-code.com/tag/huoqu/" target="_blank" class="keywords">获取</a>ftp服务器配置
 * 
 * @param string $flag 服务器标识test
 * @return array ftp服务器连接配置
 */ 
private function getServerCon<a href="https://www.js-code.com/tag/fig/" target="_blank" class="keywords">fig</a>($flag = 'test'){ 
  $flag = strtolower($flag); 
  //测试服务器 
  if($flag == 'test') return $this->testServer; 
  //<a href="https://www.js-code.com/tag/mo/" target="_blank" class="keywords">默</a>认返回测试服务器 
  return $this->testServer; 
} 

}
?>

脚本宝典总结

以上是脚本宝典为你收集整理的php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)全部内容,希望文章能够帮你解决php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)所遇到的问题。

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

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