在我的项目中,我有一些与服务器上的项目相关的文件,如下所示:
Item-1 => file1.txt, file2.pdf and file3.doc
Item-2 => file4.pdf, file5.ppt
Item-3 => file6.txt, file7.docx and file8.ppt
....
我可以通过$this->getAllItems()
获取上述项目,然后遍历每个项目。
我正在尝试以结构化方式压缩所有这些文件。因此,用户可以理解属于哪些项目的文件。
我要做的是将与其受尊重的项目相关的文件保存在一个文件夹中并将它们包装在“main”文件夹中(这应该在临时路径中发生)然后压缩它让用户下载compress文件夹。因此,文件将采用结构化方式,如下所示:
main
Item-1
--> file1.txt
--> file2.pdf
--> file3.doc
Item-2
--> file4.pdf
--> file5.ppt
Item-3
--> file6.txt
--> file7.docx
--> file8.ppt
在这里搜索时,我得到一个link,它会在临时路径中压缩文件(但不是文件夹)并使压缩文件夹可供下载。
PS:用户的每次下载请求都应该进行压缩。
答案 0 :(得分:0)
我不确定这是否正确..但这有效。
我修改了此link上可用的代码的for循环部分。
# loop through each file
foreach($files as $file){
# download file
$download_file = file_get_contents($file);
# Create a empty folder
$zip->addEmptyDir($itemName);
#add to the above created new folder in zip
$zip->addFromString($itemName . '/' . basename($file), $download_file);
}
在上面的代码中,$itemName
是在$this->getAllItems()
中循环时动态提取的项目名称,正如我在帖子中提到的那样。
如果这是正确的,请告诉我。