PHP中FTP上传文件和下载文件实例代码
在php中我们也有可以直接来操作ftp,然后利用php实现与ftp一样的文件上传与下载文件的功能哦,下面我来介绍一个完整的实例。
一、LycFtpAbstract.class.php FTP基类
<?php /* 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 实现类
<?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 异常基类
<?php /* author:凹凸曼(lyc) /* email: jar-c@163.com /* time : 2011-04-22 /* */ class Lyc_Exception extends Exception { } ?>
四、LycFtpException.class.php FTP异常类
<?php /* author:凹凸曼(lyc) /* email: jar-c@163.com /* time : 2011-04-22 */ require_once 'Lyc/Exception.class.php'; class Lyc_Ftp_Exception extends Lyc_Exception { } ?>
五、测试区
<?php /** * 上传文件 * */ 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.phprm.com/frame/php1005357.html
转载随意,但请附上文章地址:-)