已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 教程

标题: 贴段文件夹复制的代码 for FTP

作者: @Ta

时间: 2012-02-24

点击: 3154

原理先下载再上传,这是FTP复制的方法。缺点:空间不给力的话,复制得会不全。

<?php
/**
 * Base class for HiFTP.
 * @copyright Funch
 */
       ………
    function GetDir($d,$tmp){
    @mkdir($tmp,0777);
    $this->chdir($d);
    $f=$this->nlist('.');
    foreach($f as $fi){
    if($fi=='.' || $fi=='..') continue;
$this->isFile($fi) ? $this->get($fi,$tmp.'/'.$fi) : $this->GetDir($d.$this->sep($d).$fi,$tmp.'/'.$fi);
    }
    }
    function copy_dir($dir,$to){
    $this->GetDir($dir,($lc='cache/HiFTP-Getdir-'.uniqid()));
    $this->dput($lc,$to.$this->sep($to).$this->cwork($dir));
}
    function scan($temp){
    $list=glob($temp.'/*');
    foreach($list as $fd){
    if(is_file($fd)){
    $z.="8¿".$fd.PHP_EOL;
    }elseif(is_dir($fd) && ($fd!=$temp.'/.') && ($fd!=$temp.'/..')){
    $z.="5¿".$fd.PHP_EOL;
    $z.=$this->scan($fd);
    }}
    return $z;
    }
    function dput($temp,$to){
   $dd=explode(PHP_EOL,$this->scan($temp));
    natsort($dd);
    foreach($dd as $dz){
    $dza=explode('¿',trim($dz));
    $dzi=str_replace($temp.'/','',trim($dza[1]));
    if(trim($dza[0])=='5'){
    $this->mkdirs($this->realdir($to.$this->sep($to).$dzi));
    }else{
    $this->isDir($to) || $this->mkdirs($to);
    $this->put("{$temp}/{$dzi}",$this->realdir($to.$this->sep($to).$dzi));
    }}
    return true;
    }
       ………


错误之处请指正!

[隐藏样式|查看源码]


『回复列表(5|隐藏机器人聊天)』

1. 所以我毅然不用FTP
(/@Ta/2012-02-24 17:50//)

2. 正是考虑到这个问题;最近在写个类,有了它,批量操作/解压二三十兆都能轻松搞定;原理即将脚本PUT至你的空间,发个HTTP请求让它执行,完毕后自我毁灭。
(/@Ta/2012-02-24 18:01//)

3. 最开始HiFTP的解压就是这样实现的吧!
(/@Ta/2012-02-24 18:11//)

4. 最早的版本是HiFTP解压的、耗服务器,接着通过WAPFTP.RU解压。
(/@Ta/2012-02-24 18:27//)

5.
最好的在线FTP:
WAPFTP.CO
(/@Ta/2013-01-08 23:05//)

回复需要登录

9月12日 04:34 星期五

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1