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创建PDF中文文档
Oct 09 PHP
PHP 日常开发小技巧
Sep 23 PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
php实现指定字符串中查找子字符串的方法
Mar 17 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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
一个目录遍历函数
2006/10/09 PHP
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
学生手册评语
2014/05/05 职场文书
三严三实心得体会范文
2014/10/13 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
廉洁自律个人总结
2015/02/14 职场文书
大学感恩节活动总结
2015/05/05 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
工作建议书范文
2019/07/08 职场文书
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android