3

这是一个在所有目录中上传文件的脚本。但是当我运行它时,它只上传一次然后上传失败。这段代码有什么问题?

function read_directory($p_pathname)
{
$d = dir ($p_pathname);
$target = $p_pathname; 
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target.$_FILES['uploaded']['name'])) 
{
    echo $target. "Done<br>";
} 
else 
{
    echo $target."Sorry<br>";
}
while (($file = $d->read()) !== false)
{
    if (($file != ".") and ($file != ".."))
    {
        $filetype = filetype ("{$d->path}/{$file}");

        if ($filetype == "dir")
        {
            read_directory ("{$d->path}/{$file}");
        }
        else
        {
            // echo "\tFILE: {$d->path}/{$file}\n";
        }
    }
}
$d->close;
}
4

2 回答 2

1

使用copy()而不是move_uploaded_file(). move_uploaded_file()完成后删除源文件,因此您不能在同一个文件上多次使用它。copy()保留原始文件,因此您可以根据需要多次执行此操作。

当脚本退出时,如果上传的临时文件没有被脚本移动,PHP 会自动删除它。

于 2012-10-27T06:12:11.243 回答
0

在你第一次移动文件时......不复制......所以只有下次那个文件不在临时目录中,所以你不能再移动..

于 2012-10-01T05:16:53.353 回答