【发布时间】:2015-11-14 10:30:37
【问题描述】:
我希望在服务器上压缩一个目录并将其下载给用户。我在这个网站上找到了有关如何压缩目录的大量信息。
让我难过的部分是存储临时文件的位置。根据我的阅读,zipArchive 要求将 zip 文件保存在服务器上,不保存就无法下载。对吗?
我见过一些解决方案,他们建议将其保存为“somename.zip”,然后使用readfile() 以及相应的标头进行下载,然后在下载后使用unlink() 将其删除。但是在哪里存储“somename.zip”以及如果发生冲突怎么办?
所以,然后我开始考虑我应该在某个临时目录中创建一个具有随机名称的文件。或者我应该使用tmpfile() 之类的东西,但它会返回一个文件处理程序,我不知道它如何与 zipArchive 一起使用。
对于我的应用程序,目录的大小相当小,甚至不想将其写入磁盘,而是写入内存。也许像$tmp_handle = fopen('php://temp', 'r+'); 这样的东西,但这又会返回一个文件处理程序,我不知道它如何与 zipArchive 一起工作。
zipArchive创建的zip文件应该如何临时保存?
【问题讨论】:
-
@MarcB 谢谢。是的,我目前正在使用
$temp_file = tempnam(sys_get_temp_dir(), "ZIP");。似乎工作。不知道我的记忆存储想法有没有优点...