php-本机服务器移动文件或者递归移动文件夹

2017-09-13 10:29:30来源:oschina作者:ljaaple人点击

分享

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


用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

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台