0

我正在为网站(一种淡化的 CMS)开发一个可分发的框架,它有一个用于添加插件的模块系统。我将使用上传的档案来安装这些模块,并且我想允许使用 zip、bzip、gzip、rar 和 tar。我做了一些谷歌搜索,知道其中一些文件类型可以由 zlib 扩展或 ZipArchive 处理,但是,我不清楚这些包中的任何一个是否支持这些允许的文件类型的解包。我还研究了一些用于处理档案的 3rd 方类(主要是 pclzip),但大多数是几年前发布的,最近没有更新。我不确定现在应该如何处理以及这些包的工作方式是否存在差异。如果有人能对这个主题有更多的了解,我将不胜感激。

4

2 回答 2

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

于 2013-02-25T22:59:09.287 回答
0

很难为所有这些找到库。最简单的方法是使用system()运行相关实用程序来提取提供的文件类型。

于 2013-02-25T22:35:45.437 回答