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 相关文章推荐
PHP中设置时区,记录日志文件的实现代码
Jan 07 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
PHP中捕获超时事件的方法实例
Feb 12 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 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根据年月获取季度的方法
2014/03/31 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
PHP安全下载文件的方法
2016/04/07 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
详解Python中的日志模块logging
2015/06/19 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python中list初始化方法示例
2016/09/18 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
静态变量和实例变量的区别
2015/07/07 面试题
国贸专业自荐信范文
2014/03/02 职场文书
品质主管岗位职责
2014/03/16 职场文书
机关办公室岗位职责
2014/04/16 职场文书
工作岗位说明书模板
2014/05/09 职场文书
大学四年个人总结
2015/03/03 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
教育教学读书笔记
2015/07/02 职场文书
三八妇女节致辞
2015/07/31 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server