您好我正在寻找一种方法来提取ZIP的文件名,并在我的网站上创建一个zip的内容。我不想提取文件本身我只是想通过zip文件循环并打印出它的内容。
这包括子文件夹等。 我找到了一个很好的答案here,并将以下代码作为解决方案:
$zip = new ZipArchive;
if ($zip->open('source.zip') === TRUE)
{
for($i = 0; $i < $zip->numFiles; $i++)
{
$fp = $zip->getStream($zip->getNameIndex($i));
if(!$fp) exit("failed\n");
while (!feof($fp)) {
$contents = fread($fp, 8192);
// do some stuff
}
fclose($fp);
}
}
else
{
echo 'Error reading zip-archive!';
}
但这不适用于子目录。
但我发现的另一个差距如下:如果整个zip存档只有一个根目录,并且在这个目录中是所有其他文件,那么方法$ zip-&gt; numFiles将返回0,因此循环(在上面的例子中)将不会运行!
总的来说,我认为这不会一直有效。我认为一种解决方案是进行递归,但这很难实现,所以我正在寻找替代方案。