【问题标题】:PHP - create standard zip file with zlibPHP - 使用 zlib 创建标准 zip 文件
【发布时间】:2012-06-01 14:48:54
【问题描述】:

我刚刚发现我的托管服务器不支持 PHP 的 ZIP 类。

但是,它已安装并支持 Zlib。

是否有任何库/函数/hack/类/可以让我在这样的服务器上处理 ZIP 文件?

基本上我想创建 zip 文件。我担心我的用户会害怕 GZ 扩展,我想为他们提供 ZIP 扩展(它们将在 win 系统上正常打开)?

(请不要告诉我更换主机 - 我已经知道我必须这样做,但这需要时间,而且事情很紧急..)

更新我。感谢@Mark Ba​​ker - 我能够使用 pclzip 类和这个简单的代码提取文件

<?php

 include('pclzip.lib.php');
  $archive = new PclZip('wp.zip');
  $location = $_SERVER['DOCUMENT_ROOT'];
  if ($archive->extract(PCLZIP_OPT_PATH, $location ,
                        PCLZIP_OPT_REMOVE_PATH, 'install/release') == 0) {
    die("Error : ".$archive->errorInfo(true));
  }
?>

(我只是想在这里发布代码,评论太长,我不想发布另一个答案)

仍然没有测试创建,但如果它的工作原理相同 - 那我真的很想亲吻那个类的开发人员! :-)

【问题讨论】:

    标签: php zip zlib


    【解决方案1】:

    Zlib 不会帮助您创建 zip 文件。

    作为您缺少的 ZipArchive 的替代方案,您可以查看 PCLZip 库。这是纯 PHP,因此不需要额外的扩展,并且允许您在没有 ZipArchive 的情况下创建 zip 文件。

    【讨论】:

    • 是的,zlib 当然可以帮助您创建 zip 文件,因为它提供了所需的核心压缩和 crc32 例程,这是最难的部分。您需要做的就是用 zip 标头和预告片包装压缩数据。 PCLZip 使用 zlib 来做到这一点。
    • @Mark Ba​​ker - 伙计! :-) 天才 。正是我想要的。我还没有测试创建,但已经成功提取了 zip 文件。非常感谢!
    • @Mark Adler - 好吧,很有趣。那么你能举例说明如何做到这一点吗?它是否支持文件夹和嵌套文件(据我了解,zlib 不支持..)
    • 我对 zlib 的看法得到了纠正,但仍然坚持推荐 PCLZip 作为一个在 ZipARchive 不可用时可以做很多有用工作的类
    • @Mark Ba​​ker 再次感谢您的努力 - 我不完全确定您在考虑这种方法时是错误的。 @will 也有类似的想法。也许它真的可以工作。需要测试(由于嵌套和内部文件夹,不确定 CREATION,但带有正确标题的简单文件可能会起作用。)
    【解决方案2】:

    我相信在 Windows 上,扩展只会告诉它使用什么应用程序来打开它。

    所以你可以把它保存为winzip会打开的东西,然后重命名它……

    【讨论】:

    • 如果我将人为更改服务器上的扩展名并将其作为 ZIP 提供,您的意思是 GZ 文件和 ZIP 文件之间没有区别吗?
    • @ninenine 不,肯定有区别,而且会误导用户,但如果只是你关心的windows用户。不过,这确实不是一个好的解决方案,这可能是我被否决的原因。
    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    相关资源
    最近更新 更多