我正在创建某种文件共享应用程序。在这个应用程序中,您应该能够提高-&下载文件并构建这些文件。
我选择不继续操作文件系统。但是我将文件上传到基于时间戳的文件夹中,并将重要信息存储在数据库中,并在DB中构建它们。所以没有真正的子文件夹,只有数据库中的关系将这些文件组织到文件夹中。
不我想让用户通过压缩来下载文件夹(包括子文件夹)。但是我想在将要下载的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文件中创建文件夹,而不存在于文件系统中?
- 在你的临时目录 创建一个文件夹
- 添加子文件夹和链接到真实文件
- 闭嘴
- 发送
- 杀死临时文件
关于链接的部分很重要。如果您只是使用链接,则实际上不必复制文件内容。您所要做的就是给zip工具一个提示,它可以在哪里找到您想要包含在存档文件
中的内容。编辑:符号链接和硬链接都可以,上面的链接解释了如何使用符号链接。