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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
php 文件夹删除、php清除缓存程序
Aug 25 PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PHP经典面试题集锦
Mar 19 PHP
PHP基于yii框架实现生成ICO图标
Nov 13 PHP
php常用图片处理类
Mar 16 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 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
一个MYSQL操作类
2006/11/16 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
Smarty3配置及入门语法
2017/02/22 PHP
php微信开发之图片回复功能
2018/06/14 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
js变量以及其作用域详解
2020/07/18 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
公司运动会策划方案
2014/05/25 职场文书
生产车间标语
2014/06/11 职场文书
工地质量标语
2014/06/12 职场文书
行政介绍信范文
2015/05/04 职场文书
综治目标管理责任书
2015/05/11 职场文书
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python