php实现复制移动文件的方法
本文实例讲述了php实现复制移动文件的方法。分享给大家供大家参考。具体如下:
仿写elFinder的,抽出关键的成员方法做的一个简单示例
实现功能是:
实现多文件复制或移动操作
注:为了方便测试,对一些判断做了简单处理。并且会在程序文件所在目录下
新生成一个test文件夹作为目的文件夹。如果实际使用需要修改。
copy.php文件如下:
<?php /** *复制/移动操作简单示例:>PHP5 * */ /** *判断文件是否存在 * */ function_isFind($filename){ return@file_exists($filename); } /** *判断文件夹是否存在?简单处理:仅对根目录进行判断 * */ function_isFindDir($dir){ $ls=scandir(dirname(__FILE__)); foreach($lsas$val){ if($val==$dir)returnTRUE; } returnFALSE; } /** *复制或移动 * *@paramarray源文件夹数组:简单处理:采用文件名作为元素值 *@paramstring目的文件夹 *@paramstring操作数:move-移动;copy-复制 *@returnbool */ function_copy_move($src=array(),$dst='',$op='move'){ if(!is_array($src)){ $src=array($src); } //判断源文件是否存在? foreach($srcas$val){ if(_isFind($val)===FALSE){ return_log('Srcfilenotfind',$val); } } //判断目的文件夹是否存在?如果不存在就生成 //简单处理:实际应用需要修改 if(_isFindDir($dst)===FALSE){ @mkdir($dst); } //执行移动或复制操作 foreach($srcas$val){ $_dst=$dst.'/'.basename($val); //判断目的文件是否存在?存在不允许进行操作 if(_isFind($_dst)===TRUE){ return_log('Dstfileisexists',$dst); }elseif(strpos($dst,$val)===0){ return_log('Unabletocopy/moveintoitself'); } if(strtolower($op)==='move'){ if(!rename($val,$_dst)){ return_log('Unabletomovefiles',$val); } }elseif(strtolower($op)==='copy'){ if(!_copy($val,$_dst)){ return_log('Unabletocopyfiles',$val); } } } return'Success!'; } /** *复制操作 * */ function_copy($src,$dst){ if(!is_dir($src)){ if(!copy($src,$dst)){ return_log('Unabletocopyfiles',$src); } }else{ mkdir($dst); $ls=scandir($src); for($i=0;$i<count($ls);$i++){ if($ls[$i]=='.'OR$ls[$i]=='..')continue; $_src=$src.'/'.$ls[$i]; $_dst=$dst.'/'.$ls[$i]; if(is_dir($_src)){ if(!_copy($_src,$_dst)){ return_log('Unabletocopyfiles',$_src); } }else{ if(!copy($_src,$_dst)){ return_log('Unabletocopyfiles',$_src); } } } } returnTRUE; } /** *日志记录 * */ function_log($msg,$arg=''){ if($arg!=''){ $msg="date[".date('Y-m-dH:i:s')."]\tmsg[".$msg."]\targ[".$arg."]\n"; }else{ $msg="date[".date('Y-m-dH:i:s')."]\tmsg[".$msg."]\n"; } echo$msg; return@file_put_contents('copy.log',$msg,FILE_APPEND); } /** *示例 *1.需要修改$src的数组参数;2.可以修改_copy_move的第三个参数以分别测试move/copy操作 * */ $src=array('img','min','phpinfo.php'); $dst='test'; var_dump(_copy_move($src,$dst,'copy')); /*endofphp*/
希望本文所述对大家的php程序设计有所帮助。