0

在我的项目中,我有一些与服务器上的项目相关的文件,如下所示:

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
   Item-1
      --> file1.txt
      --> file2.pdf
      --> file3.doc
   Item-2
      --> file4.pdf
      --> file5.ppt
   Item-3  
      --> file6.txt
      --> file7.docx
      --> file8.ppt

在这里搜索时,我得到了一个链接,该链接将文件(但不是文件夹)压缩到临时路径中,并使压缩文件夹可供下载。

PS:用户的每次下载请求都应该进行压缩

4

1 回答 1

0

我不确定这是否正确..但这有效。

我修改了此链接上可用的代码的 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()正如我在帖子中已经提到的那样。

请让我知道这是否正确。

于 2014-04-14T07:36:18.773 回答