我正在开发一个递归显示zip文件中文件列表的函数。可能会发生另一个zip文件中的zip文件,我想像文件夹一样显示其内容。
我仔细阅读了this question,但我还没丢。理想情况如果我可以使用getStream
获取内部邮政编码并将此流发送到另一个ziparchive::open
,那将是完美的,但我没有这么多。
我尝试过的事情(只是为了测试):
尝试1:
$data = file_get_contents('outer.zip');
$data64 = base64_encode($data);
$zip = new ZipArchive();
$r = $zip->open('data::text/plain;base64,'.$data64);
var_dump($r);
if($r){
$zip->close();
}
尝试2:
$zip = new ZipArchive();
$r = $zip->open('zip://outer.zip#inner.zip');
var_dump($r);
if($r){
$zip->close();
}
如果我必须递归解压缩任何文件到temp只是为了列出里面的文件,特别是对于大文件,它将是如此缓慢和臃肿。在这一点上,我正在寻求shell_exec
解决方案。