PHP zip存档添加了额外的文件夹

时间:2013-11-21 15:08:37

标签: php zip directory absolute

我有一段代码生成一个.zip存档,其中包含给定文件夹中的所有文件和文件夹。它看起来像这样:

function zipDirectory($source, $destination, $flag = '')
{
if (!extension_loaded('zip') || !file_exists($source))
{
    return false;
}
$zip = new ZipArchive();
if (!$zip->open($destination, ZIPARCHIVE::CREATE))
{
    return false;
}
$source = str_replace('\\', '/', realpath($source));
if($flag)
{
    $flag = basename($source) . '/';
    //$zip->addEmptyDir(basename($source) . '/');
}
if (is_dir($source) === true)
{
    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
    foreach ($files as $file)
    {
        $file = str_replace('\\', '/', realpath($file));

        if (is_dir($file) === true)
        {
            $zip->addEmptyDir(str_replace($source . '/', '', $flag.$file . '/'));
        }
        else if (is_file($file) === true)
        {
            $zip->addFromString(str_replace($source . '/', '', $flag.$file), file_get_contents($file));
        }
    }
}
else if (is_file($source) === true)
{
    $zip->addFromString($flag.basename($source), file_get_contents($source));
}
return $zip->close();
}

zipDirectory($downloadID.'/','temp_'.$downloadID.'.zip', false);

$zip_file = 'temp_'.$downloadID.'.zip';
$file_name = basename($zip_file);
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=" . $file_name);
header("Content-Length: " . filesize($zip_file)+15);

但是,生成的.zip存档最终包含指定的文件夹,以及一个名为“C:”的额外文件夹,其中包含文件夹,构成了我网站根目录的绝对路径。此文件夹链中没有文件。

我真的不知道是什么导致了这个...任何想法?非常感谢。

0 个答案:

没有答案