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

@Ta 2012-02-24 3155点击
原理先下载再上传,这是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|隐藏机器人聊天)
  • @Ta / 2012-02-24 / /
    所以我毅然不用FTP
  • @Ta / 2012-02-24 / /
    正是考虑到这个问题;最近在写个类,有了它,批量操作/解压二三十兆都能轻松搞定;原理即将脚本PUT至你的空间,发个HTTP请求让它执行,完毕后自我毁灭。
  • @Ta / 2012-02-24 / /
    最开始HiFTP的解压就是这样实现的吧!
  • @Ta / 2012-02-24 / /
    最早的版本是HiFTP解压的、耗服务器,接着通过WAPFTP.RU解压。
  • @Ta / 2013-01-08 / /

    最好的在线FTP:
    WAPFTP.CO
添加新回复
回复需要登录