在php中我們也有可以直接來操作ftp,然後利用php實現與ftp一樣的檔案上傳與下載檔案的功能哦,下面我來介紹一個完整的執行個體。
一、LycFtpAbstract.class.php FTP基類
| 代碼如下 |
複製代碼 |
/* author:凹凸曼(lyc) /* email: jar-c@163.com /* time : 2011-04-22 */ abstract class Lyc_Ftp_Abstract { protected $ftpobj=null; protected $host=''; protected $user='anonymous'; protected $pwd=''; protected $mode=FTP_BINARY; protected $port=21; protected $timeout=90; protected $pasv=TRUE; protected function init(){ } /** * 建立ftp串連 * */ protected function connect(){ $this->ftpobj=@ftp_connect($this->host,$this->port,$this->timeout); if(null==$this->ftpobj){ require_once 'Lyc/Ftp/Exception.class.php'; throw new Lyc_Ftp_Exception("FTP ERROR : Couldn't connect to $this->host"); } } /** * 建立ssl ftp串連 * */ protected function connectSsl(){ $ftpobj=@ftp_ssl_connect($this->host,$this->port,$this->timeout); if(null==$ftpobj){ require_once 'Lyc/Ftp/Exception.class.php'; throw new Lyc_Ftp_Exception("FTP ERROR : Couldn't connect to $this->host"); } } /** * 登入驗證ftp 及設定模式 * */ protected function login(){ if(@ftp_login($this->ftpobj,$this->user,$this->pwd)){ ftp_pasv($this->ftpobj,$pasv); }else{ require_once 'Lyc/Ftp/Exception.class.php'; throw new Lyc_Ftp_Exception("FTP ERROR : Couldn't login to $this->host"); } } /** * 上傳檔案 * */ public function upload($remotefile,$localfile){ } /** * 下載檔案 * */ public function download($localfile,$remotefile){ } /** * 關閉串連 * */ public function close(){ if(is_string($this->ftpobj)){ ftp_close($this->ftpobj); } } } ?>
|
二、LycFtpFtp.class.php 實作類別
| 代碼如下 |
複製代碼 |
/* author:凹凸曼(lyc) /* email: jar-c@163.com /* time : 2011-04-22 /* */ require_once 'Lyc/Ftp/Abstract.class.php'; class Lyc_Ftp_Ftp extends Lyc_Ftp_Abstract{ public function __construct($host,$user,$pwd,$mode=FTP_BINARY,$port=21,$timeout=90,$pasv=TRUE){ $this->host=$host; $this->user=$user; $this->pwd=$pwd; $this->mode=$mode; $this->port=$port; $this->timeout=$timeout; $this->pasv=$pasv; $this->init(); } protected function init(){ $this->connect(); $this->login(); } /** * 上傳檔案 * */ public function upload($remotefile,$localfile){ $res=ftp_nb_put($this->ftpobj,$remotefile,$localfile,$this->mode,ftp_size($this->ftpobj,$remotefile)); while($res==FTP_MOREDATA){ $res=ftp_nb_continue($this->ftpobj); } if($res!=FTP_FINISHED){ return FALSE; } return TRUE; } /** * 下載檔案 * */ public function download($localfile,$remotefile){ ftp_set_option($this->ftpobj,FTP_AUTOSEEK,FALSE); $res=ftp_nb_get($this->ftpobj,$localfile,$remotefile,$this->mode,ftp_size($this->ftpobj,$localfile)); while($res==FTP_MOREDATA){ $res=ftp_nb_continue($this->ftpobj); } if($res!=FTP_FINISHED){ return FALSE; } return TRUE; } } ?>
|
三、LycException.class.php 異常基類
| 代碼如下 |
複製代碼 |
/* author:凹凸曼(lyc) /* email: jar-c@163.com /* time : 2011-04-22 /* */ class Lyc_Exception extends Exception{ } ?> |
四、LycFtpException.class.php FTP異常類
| 代碼如下 |
複製代碼 |
/* author:凹凸曼(lyc) /* email: jar-c@163.com /* time : 2011-04-22 */ require_once 'Lyc/Exception.class.php'; class Lyc_Ftp_Exception extends Lyc_Exception{ } ?> |
五、測試區
| 代碼如下 |
複製代碼 |
/** * 上傳檔案 * */ public function uploadTest(){ require_once 'Lyc/Ftp/Ftp.class.php'; $host=23.64.41.13'; //主機 $user='tguser'; //使用者名稱 $pwd=""; //密碼 連接埠預設21 也可改 $ftp=new Lyc_Ftp_Ftp($host,$user,$pwd); $res=$ftp->upload('test.rar',"F:wwwroottestareaLycTesttest.rar"); if(!$res){ echo " upload failure"; } } public function downloadTest(){ require_once 'Lyc/Ftp/Ftp.class.php'; $host=33.64.41.135'; $user='tguser'; $pwd=""; $ftp=new Lyc_Ftp_Ftp($host,$user,$pwd); $res=$ftp->download("c:test.rar","test.rar"); if(!$res){ echo "download failure"; } }
|
http://www.bkjia.com/PHPjc/444624.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444624.htmlTechArticle在php中我們也有可以直接來操作ftp,然後利用php實現與ftp一樣的檔案上傳與下載檔案的功能哦,下面我來介紹一個完整的執行個體。 一、LycFtp...