createZipNoTopDir('test.docx.zip', '1.docx');
/**
* 生成压缩包,不带要压缩文件夹的根目录
* @param string $zipNamePath 要生成的压缩包名
* @param string $basePath 进行压缩的文件夹路径
* @param string $newdir 新文件夹路径,调用时不传。为递归时使用
*/
function createZipNoTopDir($zipNamePath,$basePath,$newdir='')
{
$objZip = new ZipArchive();
if($objZip->open($zipNamePath,ZipArchive::CREATE)===true)
{
//目录不为空时,添加空目录
if(!empty($newdir)) $objZip->addEmptyDir($newdir);
$path = $basePath.$newdir;
foreach (new DirectoryIterator($path) as $file)
{
$new_Dir_Sep = (empty($newdir) ? '' : '/');
if($file != '.' && $file != '..')
{
if(is_dir($path.'/'.$file))
{
addEmpDirAndAllFile($objZip, $basePath,$newdir.$new_Dir_Sep.$file);
}
else
{
$objZip->addFile($path.'/'.$file,$newdir.$new_Dir_Sep.$file);
}
}
}
$objZip->close();
}
}
?>