4

有谁知道在创建 zip 文件时如何使用 PHP ZIP 函数来应用标准zip选项”。到目前为止,我所有的搜索都没有发现任何东西。

特别是我对应用“ -ll ”和“ -l ”选项感兴趣,这样我就可以从 nix 网站提供基于压缩文本的文件( cgi 和 php 和文本文件等)的WIN 或 NIX 版本。内容将被即时压缩,其中包含为每个特定客户添加的一些文件。

我知道构建和使用命令行'back-ticked'(Perl)或“passthru(。)”(php)方法,但我希望有一个使用纯php的技巧,即ZipArchive()。

问候。

4

2 回答 2

0

您最终可能会退回到 shell_exec 并仅使用本机系统执行 zip,然后您可以根据需要传递 -ll 或 -l 。http://php.net/manual/function.shell-exec.php

于 2012-05-20T02:19:32.263 回答
0

我认为 str_replace() 非常明显。但是,这对大文件来说是内存密集型的。

我不会显示所有代码,但是 php 有一个很少使用的功能,您可以将“过滤器”应用于流,并且可以将过滤器指定为文件 url 的一部分。它提供了一种很好的方式来挂钩某些文件系统操作,否则这些操作不会让您轻松调整行为。

一旦你用stream_filter_register () 定义了一个过滤器,那么你应该能够将一个文件 url 传递php://filter/string.to_unix_line_endings/resource=/path/to/the/file.txt给该ZipArchive::addFile()方法。

最终,您也可以只创建一个临时文件,并将文件内容以块的形式复制到其中,然后进行 str_replacing,然后将临时文件名称也传递给ZipArchive::addFile()方法。这将更容易编码。

于 2012-05-20T03:00:22.773 回答