【问题标题】:How to zip and pass-through files to browser on-the-fly?如何即时压缩和传递文件到浏览器?
【发布时间】:2012-01-05 14:58:10
【问题描述】:

我想实现像 GMail 的“获取所有附件为压缩文件”这样的功能。

有没有办法在服务器上选择多个文件,压缩它们并即时传递到浏览器? (类似于 PHP 的函数 readfile 用于附件流)

[编辑]

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

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

[EDIT2]

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

【问题讨论】:

  • 我已经阅读了这个例子......但没有解决方案。
  • 哦,你的意思是一个完整的、编码的解决方案,直到最后一个字符,如“give me teh codez”?
  • @Piskvor 不,我可以处理这个编码,但我必须有一些提示,而不是链接到我仔细阅读过的页面,它的内容在我的情况下似乎没用。
  • 等等,所以您不是试图将文件压缩成一个文件?通过readfile 将单个文件提供给浏览器似乎是相当简单的最后一步。

标签: php stream zip


【解决方案1】:

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

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

显然有一个PEAR library,但现在已被弃用,重点已转移到我已经提到的PECL(二进制)扩展上。 (反正整个 PEAR 生态系统都在逐渐腐烂)

【讨论】:

    【解决方案2】:

    看看ZipStream-PHP library - 它声称可以满足您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2023-04-05
      • 2019-03-23
      • 1970-01-01
      相关资源
      最近更新 更多