Что то я не вьеду как это работает ((( PHP: $zip = new ZipArchive; $res = $zip->open('1.zip'); // в архиве лежит файлик 1.txt $zip->renameIndex(0,'2.txt'); var_dump($zip->extractTo('path/')); // FALSE!!! $zip->close(); // НО если сделать так: $zip = new ZipArchive; $res = $zip->open('1.zip'); // в архиве лежит файлик 1.txt $zip->renameIndex(0,'2.txt'); $zip->close(); $zip = new ZipArchive; $res = $zip->open('1.zip'); var_dump($zip->extractTo('path/')); // TRUE!!! $zip->close(); Это так и должно быть или я чего не догоняю? Как сохранить файлик из архива с нужным мне именем? Я понимаю что можно переименовать и после распаковки...но все же....
PHP: $zip = new ZipArchive; if ($zip->open('ar.zip')) { $zip->renameName($zip->getNameIndex(0), '1.txt'); $zip->extractTo('download/'); $zip->close(); } else { echo 'Что то пошло не так'; }
@alexblack спасибо...но то же самое ( если после переименования закрыть архив и открыть по новой, все работает, БЕЗ закрытия - нет
Да,действительно, не внимательно посмотрел,тоже отработало со 2 раза. Еще один вариант: PHP: <?php $zip = new ZipArchive; $zipLocation = 'C:\ospanel\domains\localhost\ar.zip'; $zip->open($zipLocation); $filename = $zip->getNameIndex(0); copy("zip://".$zipLocation."#".$filename, "download/newname.txt"); $zip->close();
решение короче вот ))) PHP: $zip->extractTo('path/', '2.txt') Короче новое имя передаем вторым параметром https://stackoverflow.com/questions/42897904/how-to-rename-and-save-unzip-file-in-php тут подсмотрел