PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)


Posted in PHP onMay 10, 2014
<?php
/**
* 作用:FTP操作类( 拷贝、移动、删除文件/创建目录 )
* 时间:2006/5/9
* 作者:欣然随风
* QQ:276624915
*/
class class_ftp
{
    public $off; // 返回操作状态(成功/失败)
    public $conn_id; // FTP连接
    /**
     * 方法:FTP连接
     * @FTP_HOST -- FTP主机
     * @FTP_PORT -- 端口
     * @FTP_USER -- 用户名
     * @FTP_PASS -- 密码
     */
    function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS)
    {
        $this->conn_id = @ftp_connect($FTP_HOST,$FTP_PORT) or die("FTP服务器连接失败");
        @ftp_login($this->conn_id,$FTP_USER,$FTP_PASS) or die("FTP服务器登陆失败");
        @ftp_pasv($this->conn_id,1); // 打开被动模拟
    }
    /**
     * 方法:上传文件
     * @path -- 本地路径
     * @newpath -- 上传路径
     * @type -- 若目标目录不存在则新建
     */
    function up_file($path,$newpath,$type=true)
    {
        if($type) $this->dir_mkdirs($newpath);
        $this->off = @ftp_put($this->conn_id,$newpath,$path,FTP_BINARY);
        if(!$this->off) echo "文件上传失败,请检查权限及路径是否正确!";
    }
    /**
     * 方法:移动文件
     * @path -- 原路径
     * @newpath -- 新路径
     * @type -- 若目标目录不存在则新建
     */
    function move_file($path,$newpath,$type=true)
    {
        if($type) $this->dir_mkdirs($newpath);
        $this->off = @ftp_rename($this->conn_id,$path,$newpath);
        if(!$this->off) echo "文件移动失败,请检查权限及原路径是否正确!";
    }
    /**
     * 方法:复制文件
     * 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径
     * @path -- 原路径
     * @newpath -- 新路径
     * @type -- 若目标目录不存在则新建
     */
    function copy_file($path,$newpath,$type=true)
    {
        $downpath = "c:/tmp.dat";
        $this->off = @ftp_get($this->conn_id,$downpath,$path,FTP_BINARY);// 下载
        if(!$this->off) echo "文件复制失败,请检查权限及原路径是否正确!";
        $this->up_file($downpath,$newpath,$type);
    }
    /**
     * 方法:删除文件
     * @path -- 路径
     */
    function del_file($path)
    {
        $this->off = @ftp_delete($this->conn_id,$path);
        if(!$this->off) echo "文件删除失败,请检查权限及路径是否正确!";
    }
    /**
     * 方法:生成目录
     * @path -- 路径
     */
    function dir_mkdirs($path)
    {
        $path_arr = explode('/',$path); // 取目录数组
        $file_name = array_pop($path_arr); // 弹出文件名
        $path_div = count($path_arr); // 取层数
        foreach($path_arr as $val) // 创建目录
        {
            if(@ftp_chdir($this->conn_id,$val) == FALSE)
            {
                $tmp = @ftp_mkdir($this->conn_id,$val);
                if($tmp == FALSE)
                {
                    echo "目录创建失败,请检查权限及路径是否正确!";
                    exit;
                }
                @ftp_chdir($this->conn_id,$val);
            }
        }
        for($i=1;$i=$path_div;$i++) // 回退到根
        {
            @ftp_cdup($this->conn_id);
        }
    }
    /**
     * 方法:关闭FTP连接
     */
    function close()
    {
        @ftp_close($this->conn_id);
    }
}// class class_ftp end
/************************************** 测试 ***********************************
$ftp = new class_ftp('192.168.100.143',21,'user','pwd'); // 打开FTP连接
//$ftp->up_file('aa.txt','a/b/c/cc.txt'); // 上传文件
//$ftp->move_file('a/b/c/cc.txt','a/cc.txt'); // 移动文件
//$ftp->copy_file('a/cc.txt','a/b/dd.txt'); // 复制文件
//$ftp->del_file('a/b/dd.txt'); // 删除文件
$ftp->close(); // 关闭FTP连接
*****************************************************************************/
?>
PHP 相关文章推荐
php横向重复区域显示二法
Sep 25 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
php 文章调用类代码
Aug 11 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 PHP
php strnatcmp()函数的用法总结
Nov 27 PHP
PHP队列用法实例
Nov 05 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
PHP 获取 ping 时间的实现方法
Sep 29 PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 PHP
php判断电脑访问、手机访问的例子
May 10 #PHP
php计算程序运行时间的简单例子分享
May 10 #PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 #PHP
php递归删除目录下的文件但保留的实例分享
May 10 #PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 #PHP
php使用mkdir创建多级目录入门例子
May 10 #PHP
一个简单的PHP验证码实现代码
May 10 #PHP
You might like
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
武汉某公司的C#笔试题面试题
2015/12/25 面试题
应届生财务会计求职信
2013/11/05 职场文书
合作意向书模板
2014/03/31 职场文书
文明工地标语
2014/06/16 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
MySQL 语句执行顺序举例解析
2022/06/05 MySQL