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 相关文章推荐
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
php链表用法实例分析
Jul 09 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
Jun 19 PHP
Yii 框架使用Forms操作详解
May 18 PHP
基于PHP实现用户在线状态检测
Nov 10 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 强制下载文件代码
2010/10/24 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python常见字典内建函数用法示例
2018/05/14 Python
Django实现基于类的分页功能
2019/10/31 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
python FTP编程基础入门
2021/02/27 Python
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
医院总经理职责
2013/12/26 职场文书
年度考核评语
2014/01/19 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
微信小程序实现聊天室功能
2021/06/14 Javascript