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 相关文章推荐
改进的IP计数器
Oct 09 PHP
几个php应用技巧
Mar 27 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
Dec 29 PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
PHP面向对象概念
Nov 06 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
php数组合并的二种方法
Mar 21 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
PHP文件读取功能的应用实例
May 08 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 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函数解决SQL injection
2006/10/09 PHP
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
django使用xadmin的全局配置详解
2019/11/15 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
python实现udp聊天窗口
2020/03/31 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
大学生职业生涯规划范文
2014/01/08 职场文书
大学运动会通讯稿
2014/01/28 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
文明城市标语
2014/06/16 职场文书
2015年度党员个人总结
2015/02/14 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫