Можно ли перехватить разархивирование каталога, чтобы изменить имя будущей разархивированной папки?
Я использую класс PHP ZipArchive, чтобы сделать это. Распаковка работает нормально, я просто хочу добавить метку времени к имени распакованной папки.
$zip = new ZipArchive;
if ($zip->open($zipFile, ZipArchive::CREATE) === TRUE) {
$zip->extractTo($destinationFolder);
$zip->close();
} else {
return FALSE;
}
РЕДАКТИРОВАТЬ: чтобы дополнительно объяснить необходимость, моя функция в настоящее время перезаписывает папки с тем же именем в точке разархивирования. Я надеюсь прикрепить метку времени к новой папке, чтобы этого не случилось.
Я предполагаю, что вам нужно распаковать файл в определенную папку с текущей датой, исходя из этого, вы можете попробовать:
$zipFile = "test.zip";
$fnNoExt = basename($zipFile, ".zip");
$date = new DateTime();
$now = $date->getTimestamp();
$destinationFolder = "/some/path/$fnNoExt-$now";
$zip = new ZipArchive;
if ($zip->open($zipFile, ZipArchive::CREATE) === TRUE) {
if(!is_dir($destinationFolder)){
mkdir($destinationFolder, 0777);
}
$zip->extractTo($destinationFolder);
$zip->close();
} else {
return FALSE;
}
Получит ток Timestamp
и добавьте его к имени папки, если папка не существует, создайте ее и разархивируйте в нее.
ОБНОВИТЬ:
Я обновил код, чтобы он получил zipFilename
без расширения и использовать его для нового имени каталога, в этом случае он создаст новый каталог с именем test-1443467510
НОТА:
Убедитесь, что у вас есть права на запись /some/path/
Других решений пока нет …