ZipArchive .zip文件以root显示所有文件

时间:2011-04-15 09:34:27

标签: php compression

我希望代码将树中的所有文件都放到根

中的.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'摘录应如下所示

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

我想在解压缩zip时阻止文件夹层次结构。这样每个文件都应该在解压缩的zip文件夹的根目录中

请建议提示

1 个答案:

答案 0 :(得分:2)

ZipArchive::addFile()中有一个名为localname的第二个参数(请参阅here),它允许您在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");   
}