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和ACCESS写聊天室(五)
Oct 09 PHP
PHP初学入门
Nov 19 PHP
wordpress之wp-settings.php
Aug 17 PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
PHP 获取远程文件大小的3种解决方法
Jul 11 PHP
神盾加密解密教程(一)PHP变量可用字符
May 28 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
浅谈PHP各环境下的伪静态配置
Mar 13 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输出Excel文件类
2010/02/08 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
详解Python循环作用域与闭包
2019/03/21 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
由面试题加深对Django的认识理解
2019/07/19 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
Python Celery多队列配置代码实例
2019/11/22 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
国家励志奖学金获奖感言
2014/01/09 职场文书
服装设计师求职信
2014/06/04 职场文书
小学生安全责任书
2014/07/25 职场文书
接收函格式
2015/01/30 职场文书
初中化学教学反思
2016/02/22 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
实用求职信模板范文
2019/05/13 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers