我正在开发一个可分发的网站框架(一种淡化的CMS),它有一个用于添加插件的模块系统。我将使用上传的档案来安装这些模块,我想允许使用zip,bzip,gzip,rar和tar。我已经做了一些谷歌搜索,并知道其中一些文件类型可以由zlib扩展或ZipArchive处理,但是,我不清楚这些包中的任何一个是否支持解压缩那些允许的文件类型。我还研究了一些用于处理档案的第三方类(主要是pclzip),但大多数是在几年前发布的,没有最近的更新。我不确定现在应该如何处理事情以及这些软件包是如何工作的。如果有人能够对这个问题有所了解,我会非常感激。
答案 0 :(得分:0)
为所有这些人找到图书馆会很困难。最简单的方法是使用system()
运行相关实用程序来提取提供的文件类型。
答案 1 :(得分:0)
是的,他们这样做并且对于所有提到的存档类型都存在扩展(请参阅:http://www.php.net/manual/en/refs.compression.php)。对于使用二进制工具的大规模解压缩操作,正如Mark所描述的那样,可能更快 - 但不是基准测试。
这里有一个关于如何使用ZipArchive的示例,请参阅其他人的文档:
$z = new \ZipArchive();
if ($z->open("/some/path/the.zip") === true) {
// extract all
$z->extractTo("/some/path/output/folder");
// extract by rel path
if (($c = $z->getFromName("some/file/in/zip.txt")) !== false) {
file_put_contents("/tmp/my-file.txt", $c);
}
// iterate all, print index: name
for ($i = 0; $i < $z->numFiles; $i++) {
$info = $z->statIndex($i);
echo "File #$i: ". $info['name']. ' ('. $info['size']. " size)\n";
}
$z->close();
}
有点烦人的是不同的接口。您可能想要使用包装器,有几个:https://packagist.org/search/?q=archive