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 相关文章推荐
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
php代码审计比较有意思的例子
May 07 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
CodeIgniter配置之routes.php用法实例分析
Jan 19 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
利用php生成验证码
Feb 23 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
PHP模版引擎原理、定义与用法实例
Mar 29 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变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
php实现用户登陆简单实例
2017/04/04 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
Vue组件化通讯的实例代码
2017/06/23 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
Python函数嵌套实例
2014/09/23 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
python如何实现int函数的方法示例
2018/02/19 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
简单了解django orm中介模型
2019/07/30 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
《难忘的泼水节》教学反思
2014/02/27 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android