如何在运行中将文件压缩并传递给浏览器?

时间:2011-11-24 12:29:55

标签: php stream zip

我想实现像GMail这样的功能"将所有附件作为压缩文件"。

有没有办法在服务器上选择多个文件,将它们和实时传递链接到浏览器? (类似于PHP' s函数readfile用于附件流)

[编辑]

您似乎误解了我的意图,所有给出的示例都需要在发送之前创建并关闭存档,我想在创建存档时进行流式处理。

像unix命令之类的东西(来自zip手册): zip -r - . | dd of=/dev/nrst0 obs=16k

[EDIT2]

我有大量的~2MB文件(> 100)服务,等待创建tmp zip文件强制实现排队机制并占用存储空间...如果可以通过流/管道直接进入浏览器,为什么我应该在filesyetm中写tmp zip?

2 个答案:

答案 0 :(得分:1)

查看ZipStream-PHP图书馆 - 它声称可以满足您的需求。

答案 1 :(得分:1)

您的PHP主机可能碰巧安装了zip extension。 如果是这样,你应该使用它。 (表现原因)

否则,对于zip存档,一个没有依赖关系的好库是PclZip

显然有一个PEAR library,但现在已弃用,焦点已转移到我已经提到的PECL(二进制)扩展。 (无论如何,整个PEAR生态系统正在逐渐衰退)