ZipArchive :: addEmptyDir создает пустой файл в ZIP-файле

Когда я создаю 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();

Снимок экрана: CLICK

Есть идеи, что случилось?

1

Решение

Вполне вероятно, что, запустив addEmptyDir функция, а затем работает addFile функция в тот же каталог, вы на самом деле создаете два экземпляра test в глазах некоторых программ Unzip. Как правило, это не будет проблемой, но если вы хотите избежать этого для вашей версии 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();
2

Другие решения

addEmptyDir из того, что я вижу в старых версиях, и, согласно документации, не создает последнюю часть пути к папке в виде папки, а создает ее в виде файла без расширения.

0

По вопросам рекламы [email protected]