ZipArchive .zip файл, чтобы показать все файлы в корне - PullRequest
1 голос
/ 15 апреля 2011

Я хочу, чтобы код превращал все файлы в дереве в файлы .zip в корне

   <?PHP
// create object
$zip = new ZipArchive();

// open archive 
if ($zip->open('my-archive.zip', ZIPARCHIVE::CREATE) !== TRUE) {
    die ("Could not open archive");
}

// list of files to add
// list of files to add
$fileList = array(
    'im/asd.pdf',
    'im/df.pdf',
    'im/d/qoyyum.txt'
);

// add files
foreach ($fileList as $f) {
    $zip->addFile($f) or die ("ERROR: Could not add file: $f");   
}

// close and save archive
$zip->close();
echo "Archive created successfully.";    
?> 

, например, папка / im содержит

/im/asd.pdf
/im/df.pdf
/im/d/qoyyum.txt

my-archive.zip 'extract должен выглядеть следующим образом

my-archive/asd.pdf
my-archive/df.pdf
my-archive/qoyyum.txt

Я хочу предотвратить иерархию папок при извлечении zip.чтобы все файлы находились в корне распакованной zip-папки

, пожалуйста, предложите совет, чтобы сделать

1 Ответ

2 голосов
/ 15 апреля 2011

В ZipArchive::addFile() есть второй параметр, называемый localname (см. здесь ), который позволяет вам установить локальное имя файла в zip-архиве.Используйте это, чтобы переопределить структуру каталогов, которая используется по умолчанию.

foreach ($fileList as $f) {
    $filename_parts = explode('/', $f);  // Split the filename up by the '/' character
    $zip->addFile($f, end($filename_parts)) or die ("ERROR: Could not add file: $f");   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...