当我使用波纹管代码创建.zip存档时,我得到一个奇怪的空文件。在没有创建目录的情况下添加一个文件时没关系。我可以打开存档,解压缩它没有错误。我使用的是WinRar 5.10(在WinRar 5.0及更低版本,7zip,WinZip没有问题)。
$zip = new ZipArchive();
$filename = "test112.zip";
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$zip->addEmptyDir('test');
$zip->addFile("apache_pb2.png", 'test/test.png');
$zip->close();
PrintScreen:CLICK
知道什么是错的吗?
答案 0 :(得分:2)
通过运行addEmptyDir
函数然后将addFile
函数运行到同一目录中,您实际上可能会在某些解压缩程序中创建两个test
实例。通常这不是问题,但如果您希望为您的WinRAR版本避免此问题,则应将代码修改为以下内容:
$zip = new ZipArchive();
$filename = "test112.zip";
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
//$zip->addEmptyDir('test'); // Only necessary for directories that will REMAIN empty
$zip->addFile("apache_pb2.png", 'test/test.png');
$zip->close();
答案 1 :(得分:0)
addEmptyDir来自我在旧版本中看到的内容并且文档不会将路径的最后一个“文件夹”部分创建为文件夹,而是将其创建为文件而不是扩展名。