我有一段代码生成一个.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:”的额外文件夹,其中包含文件夹,构成了我网站根目录的绝对路径。此文件夹链中没有文件。
我真的不知道是什么导致了这个...任何想法?非常感谢。