【发布时间】:2024-01-06 16:11:01
【问题描述】:
我正在创建某种文件共享应用程序。在此应用程序中,您应该能够上传和下载文件并构建这些文件。
我选择不继续操作文件系统。但是我根据时间戳将文件上传到文件夹中,并将重要信息存储在数据库中并在数据库中构建它们。所以没有真正的子文件夹,只有数据库中的关系来将这些文件构建到文件夹中。
不,我想让用户通过压缩来下载文件夹(包括子文件夹)。但是我想在将要下载的 zip-archive 中重新创建这个文件夹结构(用户在前端看到的)。我已经设法使用 PHP 的 ZipArchive 类做到了这一点:http://php.net/manual/en/class.ziparchive.php 但这有一个大问题。压缩大文件时会占用大量内存和 CPU。并且系统必须能够处理大文件(>1GB)我不可能允许 PHP 使用 >1GB 的内存?!
现在我发现了一个 * 问题,可以在 php 中使用更少的内存压缩大文件: https://*.com/a/4357904/383731
这似乎使用了 Unix Zip 命令,但是是否可以在文件系统中不存在这些 zip 的情况下在这些 zip 中创建文件夹?
【问题讨论】:
-
hmm... 创建一个临时目录,创建一个存档文件并删除这样的目录:
mkdir a; mkdir b; zip -r arch.zip .; rm -rf a b;. -
@mkjasinski 我不想使用真正的文件系统。我已经用 Oliver A. 的解决方案解决了这个问题,创建了符号链接 ...
标签: php unix compression zip