| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?php
- namespace app\common\util;
- //$config = array('ftp_host'=>'xxx.xxx.xxx.xxx','ftp_port'=>21,'ftp_user'=>'xxx','ftp_pwd' =>'xxxxx','ftp_dir'=>'/');
- //$ftp=new ftp();
- //$ftp->config($config);
- //$ftp->connect();
- //$ftp->put(ROOT_PATH.$file, $file);
- //@unlink($this->getPicFile($file));
- class Ftp{
- protected $_config = array( 'ftp_host'=>'www.test.com', 'ftp_port'=>'21', 'ftp_user'=>'maccms', 'ftp_pwd' =>'maccms', 'ftp_timeout'=>'30', 'ftp_dir' =>'/', 'ftp_pasv'=>1 );
- protected $_conn = null;
- protected $_rs = null;
- public function __construct($config=array()){
- !function_exists('ftp_connect') && die('FTP模块不支持!');
- $this->config($config);
- }
- public function config($config=array()){
- $this->_config = array_merge($this->_config, $config);
- }
- function connect(){
- $this->_conn = @ftp_connect($this->_config['ftp_host'],$this->_config['ftp_port'],$this->_config['ftp_timeout']);
- if(!$this->_conn){
- return -1;//FTP服务器连接失败! 请检查服务器地址和端口
- }
- $this->_rs = @ftp_login($this->_conn, $this->_config['ftp_user'], $this->_config['ftp_pwd']);
- if(!$this->_rs){
- return -2; //FTP登录错误! 请检查用户名和密码
- }
- $this->_config['ftp_pasv'] && $this->pasv(true);
- if(!$this->chdir($this->_config['ftp_dir'])){
- return -3; //切换到FTP当前目录失败! 请检查目录是否存在
- }
- return $this;
- }
- function chdir($dir){
- return @ftp_chdir($this->_conn,$dir);
- }
- function is_file($file){
- $buff = @ftp_mdtm($this->_conn, $file);
- if($buff != -1){
- return true;
- }else{
- return false;
- }
- }
- function pasv($mode=true){
- return @ftp_pasv($this->_conn, true);
- }
- function put($local_file, $remote_file, $mode='B'){
- if($mode == 'B'){
- $mode = FTP_BINARY;
- }else{
- $mode = FTP_ASCII;
- }
- $this->mkdirs(dirname($remote_file));
- $rs = @ftp_put($this->_conn, $remote_file, $local_file, $mode);
- return $rs;
- }
- function mkdirs($dir){
- $dir = str_replace("\\",'/',$dir);
- $dirs = explode('/', $dir);
- $total = count($dirs);
- foreach($dirs as $val){
- if($val == '.'){
- continue;
- }
- if($this->chdir($val) == false){
- if(!$this->mkdir($val)){
- return false;//创建失败
- }
- $this->chdir($val);
- }
- }
- $this->chdir($this->_config['ftp_dir']);
- return true;
- }
- function mkdir($dir){
- return @ftp_mkdir($this->_conn, $dir);
- }
- function unlink($file){
- return @ftp_delete($this->_conn, $file);
- }
- function rename($old_name, $new_name){
- return @ftp_rename($this->_conn, $old_name, $new_name);
- }
- function rmdir($dir){
- return @ftp_rmdir($this->_conn, $dir);
- }
- function rmdirs($dir, $flag=1){
- $res = $this->rmdir($dir) || $this->unlink($dir);
- if(!$res){
- $files = $this->nlist($dir);
- if(empty($files)){
- return true;
- }
- foreach($files as $file){
- $file = basename($file);
- $this->rmdirs($dir.'/'.$file);
- }
- if($flag){
- $this->rmdirs($dir);
- }
- }
- return true;
- }
- function nlist($dir){
- return @ftp_nlist($this->_conn, $dir);
- }
- function bye() {
- return ftp_close($this->_conn);
- }
- }
- ?>
|