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
转载随意,但请附上文章地址:-)