2009-10-12 227 views
0

我想将所有文件从一个文件夹移动到其他文件夹。我的代码如下。在这个我做了一个文件夹,我想从模板文件夹复制所有文件将文件从一个文件夹复制到其他文件

$doit = str_replace(" ", "", $slt['user_compeny_name']); 
mkdir("$doit"); 
$source = "templat/"; 
$target = $doit . "/"; 
$dir = opendir($source); 
while (($file = readdir($dir)) !== false) { 
    copy($source . $file, $target . $file); 
} 

它工作正常。复制所有文件,但发出警告的第一个参数复制()函数不能是一个目录

任何一个可以帮助我尽快

回答

3
if ($file != "." && $file != "..") { 
// copy 
} 
4

READDIR将读取所有孩子在一个目录,包括其他迪尔斯,和'虚拟'dirs像。和..(链接到根目录和父目录,分别)您必须检查这些并防止这些实例的copy()函数。

while (($file = readdir($dir)) !== false) 
{ 
    if(!is_dir($file)) 
    { 
     copy($source.$file, $target.$file); 
    } 
} 
3

你是不是占在目录顶部...文件。这意味着它试图复制的第一件事是“\ template”。这与试图复制目录相同。

只需添加类似:

if ($file !== "." && $file !== "..") 
... 
3

opendir()将包括项目...按照该documentation

您将需要通过使用其他评论中的代码来排除这些。

+0

谢谢!现在它工作正常 – Rajanikant 2009-10-12 11:38:27

0

我知道,这个问题很老,也是答案。我觉得有必要展示一些新的方法,可以用来执行所要求的任务。

与此同时,对象被引入了更多的功能和可能性。不用说,其他答案仍然可以工作。

但在这里我们去,用DirectoryIterator

$szSrcFolder = 'source_folder'; 
$szTgtFolder = 'target_folder'; 

foreach (new DirectoryIterator($szSrcFolder) as $oInfo) 
    if ($oInfo->isFile()) 
     copy($oInfo->getPathname(), $szTgtFolder . DIRECTORY_SEPARATOR . $oInfo->getBasename()); 

记住,这个脚本之内,所有的路径是相对于脚本自身的工作目录。

我认为这是自我解释,但我们会看看。这几行将迭代源文件夹的整个内容,并检查它是否是文件,并将其复制到目标文件夹,并保留原始文件名。

相关问题