我想实现像GMail的"获取所有附件作为压缩文件"的功能。
是否有一种方法可以在服务器上选择多个文件,压缩它们并实时传递到浏览器?(类似于PHP的readfile
函数用于附件流)
[编辑]
似乎你误解了我的意图,所有给定的例子都需要创建并在被发送之前关闭存档,我想在创建存档时流式传输。
类似unix命令(来自zip手册):zip -r - . | dd of=/dev/nrst0 obs=16k
[EDIT2]
我有很多~2MB的文件(> 100)要服务,等待tmp zip文件的创建迫使实现排队机制并占用存储空间…如果它可以通过流/管道直接到浏览器,为什么我应该在filesyetm中写tmp zip ?
看一下ZipStream-PHP库-它声称可以做你需要的。
您的PHP主机可能恰好安装了zip扩展名。如果是,你应该使用它。(性能原因)
否则,对于zip归档,PclZip是一个没有依赖关系的好库。
显然有一个PEAR库用于它,但现在已弃用,焦点已转移到我已经提到的PECL(二进制)扩展。(无论如何,整个PEAR生态系统正在逐渐腐烂)