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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
php eval函数用法总结
Oct 31 PHP
分享PHP header函数使用教程
Sep 05 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
基于PHP实现数据分页显示功能
May 26 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 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取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
php获取excel文件数据
2017/04/21 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
js 解决“options为空或不是对象”
2008/12/22 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
python dlib人脸识别代码实例
2019/04/04 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
Django 框架模型操作入门教程
2019/11/05 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
使用Python实现批量ping操作方法
2020/05/06 Python
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
管理科学大学生求职信
2013/11/13 职场文书
银行求职信个人范文
2013/12/16 职场文书
生产车间班组长岗位职责
2014/01/06 职场文书
八年级生物教学反思
2014/01/22 职场文书
党支部三会一课计划
2014/09/24 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
公司放假通知怎么写
2015/04/15 职场文书
运动会通讯稿100字
2015/07/20 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL