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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
用php和MySql来与ODBC数据连接
Oct 09 PHP
PHP 写文本日志实现代码
May 18 PHP
php 短链接算法收集与分析
Dec 30 PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
python将视频转换为全字符视频
2019/04/26 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
旅游管理专业个人求职信范文
2013/12/24 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
老师对学生的寄语
2014/04/09 职场文书
小学运动会报道稿
2014/10/04 职场文书
2014年科普工作总结
2014/12/06 职场文书
担保书格式
2015/01/20 职场文书
亲戚关系证明
2015/06/24 职场文书
初中毕业生感言
2015/07/31 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS