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程序设计有所帮助。