以递归方式将文件从目录复制到目标

时间:2014-04-15 04:08:28

标签: php

我写了一个php脚本来复制目录“oldphoto”中的所有图像,然后重命名并移动它们,例如logo.png - >进入目录/l/o/logo.php

但最后成功创建了目录,但未复制图像,以下是代码

<?php

$objects = scandir('./oldphoto');


foreach ($objects as $value) {
    if ($value!='.' && $value!='..') {
        $prefix = renameTxt($value);
        moveImg ($prefix, $value);
    }

}

function renameTxt ($line) {
    $first_char = '/'.substr($line, 0 ,1);
    $sec_char = '/'.substr($line, 1 ,1).'/';
    $prefix = $first_char.$sec_char;
    return $prefix;

}

function moveImg ($prefix, $filename) {

    $src = $filename;
    $dst = '/newphoto'.$prefix;

    rcopy('oldphoto/'.$src, $dst, $filename);
}

function rcopy($src, $dst, $filename) {

    @mkdir('newphoto/'.$dst, 0, true);

    //echo $dst."<br>";
    echo $dst.$filename."<br>";
    echo 'src '.$src."<br>";
    echo 'filename '.$filename."<br>";  
    if (!copy($src, $dst.$filename)) {
        echo "fail to write image";
    }

}


?>

任何人都可以找出问题所在?

回音结果:

/newphoto/l/o/logo.png
src oldphoto/logo.png
/newphoto/l/o/logo_mini.png
src oldphoto/logo_mini.png
/newphoto/w/h/white50.png
src oldphoto/white50.png

1 个答案:

答案 0 :(得分:0)

你的目的地是错的。开头的斜杠使它查看根目录而不是您的目录。使用 DIR 或指定目录绝对路径。