首页 > php框架 > PHP中FTP上传文件和下载文件实例代码

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

转载随意,但请附上文章地址:-)

标签:none

发表留言