php - 如何在没有中间服务器端文件的情况下在 PHP 中创建和下载 zip 存档

标签 php stdout ziparchive

PHP ZipArchive 类允许我使用 open() 方法创建 zip 存档:

mixed ZipArchive::open ( string $filename [, int $flags ] )

然后,我可以将文件添加到此存档,关闭文件,然后像往常一样将其下载到用户的网络浏览器中:

header ('Content-Type: application/zip');
header ('Content-Length: ' . filesize ($filename));
header ('Content-Disposition: attachment; filename="' . $filename . '"');
readfile ($filename);
unlink ($filename);

我的问题:有没有办法避免在服务器硬盘上创建文件、下载该文件然后删除它? IE。是否可以使用 stdout 作为传递给 open() 方法的目标文件名并将存档内容直接写入 stdout ?大致如下:

ZipArchive::open ( STDOUT, ZipArchive::CREATE)

或者我是否坚持需要中间服务器端文件?

最佳答案

“ZipStream 是一个库,用于从 PHP 动态传输动态 zip 文件,而无需在服务器上写入磁盘 服务器。” 链接:https://github.com/maennchen/ZipStream-PHP

关于php - 如何在没有中间服务器端文件的情况下在 PHP 中创建和下载 zip 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35475029/

相关文章:

php - 在 PHP 中获取 mysql COUNT

php - 无法比较 mysql 和 php 中的时间

java - 以编程方式与 Java 中的 I/O 程序交互

c++ - 将字符串作为二进制写入/读取到随机访问的文件中

c# - 如何在 C# 中重定向 IronPython 的标准输出?

php - MySQLi CSV 将数据文件加载到 MySQL(CSV 中的某些列,MySQL 中的某些列)

php - 为什么我的 Wordpress 自定义路由没有从数据库返回数据?

php - ZipArchives 存储绝对路径

node.js - 使用 Node 将 zip 存档文件上传到 S3