喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
 15  1/2  1  2  > 
     
标题: FTP操作类( 拷贝、移动、删除文件/创建目录 )  
 
欣然随风
新手上路
Rank: 1



UID 69628
精华 1
积分 25
帖子 23
金钱 15 喜悦币
威望 10
人脉 0
阅读权限 10
注册 2006-3-15
状态 离线
FTP操作类( 拷贝、移动、删除文件/创建目录 )



<?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 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)
    {
        
$this->off = @ftp_get($this->conn_id,"c:/tmp.dat",$path,FTP_BINARY);    // 下载
        
if(!$this->off) echo "文件复制失败,请检查权限及原路径是否正确!";

        if(
$type$this->dir_mkdirs($newpath);
        
$this->off = @ftp_put($this->conn_id,$newpath,"c:/tmp.dat",FTP_BINARY);    // 上传
        
if(!$this->off) echo "文件复制失败,请检查权限及路径是否正确!";
    }


    
/**
     * 方法:删除文件
     * @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,'carl','jjfzzzm');    // 打开FTP连接
//$ftp->move_file('aa.txt','a/b/c/cc.txt');                     // 移动文件
//$ftp->copy_file('aa.txt','a/b/dd.txt');                       // 复制文件
//$ftp->del_file('a/b/dd.txt');                                 // 删除文件
$ftp->close();                                                  // 关闭FTP连接

******************************************************************************/
?>
[ 本帖最后由 欣然随风 于 2006-7-18 02:46 PM 编辑 ]




中国中小投资项目网
2006-7-18 02:41 PM#1
查看资料  发短消息  顶部
 
路过
注册会员
Rank: 2
初级会员



UID 66167
精华 0
积分 114
帖子 115
金钱 114 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-8-24
来自 湖南
状态 离线
[推荐阅读] 自己研究了几天,没搞明白,只好来这里问了。。
move就move吧,还move_file.难道move_dir就不行了
2006-7-18 04:28 PM#2
查看资料  访问主页  发短消息  ICQ 状态  Yahoo!  顶部
 
xrsf
新手上路
Rank: 1
一般会员



UID 30707
精华 0
积分 48
帖子 47
金钱 48 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-8-25
状态 离线
[推荐阅读] 白居易给喜悦村题的诗


QUOTE:
原帖由 路过 于 2006-7-18 04:28 PM 发表
move就move吧,还move_file.难道move_dir就不行了
纯属骚扰!
2006-7-18 05:29 PM#3
查看资料  发短消息  顶部
 
km3945 (km3945)
版主
Rank: 7Rank: 7Rank: 7
版主


UID 46538
精华 0
积分 1327
帖子 1289
金钱 1327 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-11-8
状态 离线
[推荐阅读] 关于 xmlHttp.open的问题
呵呵 命名是有问题...给你个建议.这样吧
move_file()改成
fileMove
fileCopy
dirMove
dirCopy

区别下主谓...............
2006-7-18 08:57 PM#4
查看资料  Blog  发短消息  QQ . .   顶部
 
mayi
中级会员
Rank: 3Rank: 3
初级会员


UID 68189
精华 0
积分 332
帖子 344
金钱 332 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-1-20
状态 离线
[推荐阅读] 如何判定一个字符串中某个是否为中文?
反正我是收藏了
2006-7-18 09:34 PM#5
查看资料  Blog  发短消息  顶部
 
蟋蟀
版主
Rank: 7Rank: 7Rank: 7
村里巡逻队长


UID 67242
精华 0
积分 2036
帖子 1763
金钱 2036 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2005-12-17
来自 福建
状态 离线
[推荐阅读] 说说数据库记录显示的问题
楼上这些人咋就没毛病,给人家乱调毛病。



吉林php群
27089230
2006-7-18 10:53 PM#6
查看资料  Blog  发短消息  QQ . .   顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] session存储机制
学习一下,愿意把自已的东西拿出来就是硬道理,支持你!

类中的方法‘“复制文件”copy_file,有一个c:/tmp.dat文件,想是过渡的临时文件。如果服务器在linux下这个文件就不存在。所以,要指定一个对的临时文件这个“方法”才会生效。而且上传下载一来回,对于文件传输时间会加倍。不知道可不可以用php的copy来实现这个ftp作用?




五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-7-19 03:20 PM#7
查看资料  访问主页  Blog  发短消息  QQ . .   顶部
 
欣然随风
新手上路
Rank: 1



UID 69628
精华 1
积分 25
帖子 23
金钱 15 喜悦币
威望 10
人脉 0
阅读权限 10
注册 2006-3-15
状态 离线
[推荐阅读] 大家来看看,有什么方法可以解决这个


QUOTE:
原帖由 qh663 于 2006-7-19 03:20 PM 发表
类中的方法‘“复制文件”copy_file,有一个c:/tmp.dat文件,想是过渡的临时文件。如果服务器在linux下这个文件就不存在。所以,要指定一个对的临时文件 ...
"c:/tmp.dat"是下载到客户机(访问者的机器),跟服务器没关系。
copy()不属FTP的范筹,当然它也是另一种变通的办法。




中国中小投资项目网
2006-7-19 04:46 PM#8
查看资料  发短消息  顶部
 
欣然随风
新手上路
Rank: 1



UID 69628
精华 1
积分 25
帖子 23
金钱 15 喜悦币
威望 10
人脉 0
阅读权限 10
注册 2006-3-15
状态 离线
[推荐阅读] apache关于目录权限的问题
新增了FTP上传方法up_file(),修改了复制文件方法copy_file()

<?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连接

******************************************************************************/
?>
[ 本帖最后由 欣然随风 于 2006-7-19 05:19 PM 编辑 ]




中国中小投资项目网
2006-7-19 05:10 PM#9
查看资料  发短消息  顶部
 
skyblue1984
新手上路
Rank: 1



UID 69917
精华 0
积分 1
帖子 8
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-20
状态 离线
[推荐阅读] 哪个有没有分页的类啊


QUOTE:
原帖由 km3945 于 2006-7-18 08:57 PM 发表
呵呵 命名是有问题...给你个建议.这样吧
move_file()改成
fileMove
fileCopy
dirMove
dirCopy

区别下主谓...............
在PHP编码规范建议里,则是说
动词在前 实体在后~

moveFile
delFile~
2006-7-21 04:56 PM#10
查看资料  发短消息  顶部
 15  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.040764 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP