php-本机服务器移动文件或者递归移动文件夹
博客专区 > ljaaple 的博客 > 博客详情
php-本机服务器移动文件或者递归移动文件夹
ljaaple 发表于3个月前
php-本机服务器移动文件或者递归移动文件夹
  • 发表于 3个月前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

使用场景: 同一台内部服务 两个项目; 数据库以及文件需要通过接口形式传递,附件需要搬迁本项目下的指定目录,重新处理附件路径

用php移动文件或者移动文件夹,可以用php的自带函数:rename函数。 下面写了个函数实现rename函数的功能。

public function index()
      {
        //使用
        $src = "E:/***********/upload/2017/09/12";  
        $dst = "E:/**************/upload/2017/09/13";  
 
        if($this->movefolder_copy($src, $dst)){  
            echo "Success";  
        } else{
            echo "Error";
        }
 
      }
 
    /** 
       * 递归移动源目录(包括文件和子文件)到目的目录【或移动源文件到新文件】 
 
       * @param [string] $source 源目录或源文件 
 
        * @param [string] $target 目的目录或目的文件 
 
        * @return boolean true 
 
      */ 
 
 
 
     public function movefolder_copy($source, $target){  
 
        if(!file_exists($source))return false; //如果源目录/文件不存在返回false  
 
        //如果要移动文件  
        if(filetype($source) == 'file'){  
            $basedir = dirname($target);  
            if(!is_dir($basedir))mkdir($basedir); //目标目录不存在时给它创建目录  
            copy($source, $target);  
            //unlink($source);  
 
        }else{ //如果要移动目录  
 
            if(!file_exists($target))mkdir($target); //目标目录不存在时就创建  
 
            $files = array(); //存放文件  
            $dirs = array(); //存放目录  
            $fh = opendir($source);  
 
            if($fh != false){  
                while($row = readdir($fh)){  
                    $src_file = $source . '/' . $row; //每个源文件  
                    if($row != '.' && $row != '..'){  
                        if(!is_dir($src_file)){  
                            $files[] = $row;  
                        }else{  
                            $dirs[] = $row;  
                        }  
                    }  
                }  
                closedir($fh);  
            }  
 
            foreach($files as $v){  
                 copy($source . '/' . $v, $target . '/' . $v);  
                 //unlink($source . '/' . $v); //删除原位置附件 
            }  
 
           if(count($dirs)){  
                foreach($dirs as $v){  
                    $this->movefolder_copy($source . '/' . $v, $target . '/' . $v);  
                }  
            }  
        }  
        return true;  
    }

来源:http://blog.csdn.net/misakaqunianxiatian/article/details/49623901

共有 人打赏支持
粉丝 0
博文 5
码字总数 2801
×
ljaaple
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: