0

我正在创建某种文件共享应用程序。在此应用程序中,您应该能够上传和下载文件并构建这些文件。

我选择不继续操纵文件系统。但是我根据时间戳将文件上传到文件夹中,并将重要信息存储在数据库中并在数据库中构建它们。所以没有真正的子文件夹,只有数据库中的关系来将这些文件构建到文件夹中。

不,我想让用户通过压缩来下载文件夹(包括子文件夹)。但是我想在将要下载的 zip-archive 中重新创建这个文件夹结构(用户在前端看到的)。我已经设法使用 PHP 的 ZipArchive 类来做到这一点:http: //php.net/manual/en/class.ziparchive.php 但是这有一个大问题。压缩大文件时会占用大量内存和 CPU。而且系统必须能够处理大文件(> 1GB)我不可能允许PHP使用> 1GB的内存?!

现在我发现了一个 Stackoverflow 问题,可以在 php 中使用更少的内存压缩大文件: https ://stackoverflow.com/a/4357904/383731

这似乎使用了 Unix Zip 命令,但是是否可以在这些 zip 中创建文件夹而文件系统中不存在它们?

4

1 回答 1

1
  • 在您的临时目录中创建一个文件夹
  • 添加子文件夹和链接到真实文件
  • 压缩它
  • 发送
  • 杀死临时文件

关于链接的部分很重要。如果您只使用链接,您实际上不必复制文件内容。您所做的只是给 zip 工具一个提示,它可以在其中找到您想要包含在存档中的内容

编辑:

符号链接和硬链接都有效,上面的链接解释了如何使用符号链接来实现。

于 2013-04-15T12:23:13.603 回答