用于下载的目录结构,无需将其保存在服务器上

时间:2012-03-18 09:20:30

标签: php

我有一个项目,我想创建一个动态目录树结构,而不是将其保存在服务器上,压缩它并推送下载。有可能这样做吗?

2 个答案:

答案 0 :(得分:2)

您可能正在寻找类似ZipArchive::addEmptyDir的内容,可用于在ZIP存档中创建空目录。您稍后可以将文件添加到该目录。

您仍然需要将生成的存档保存到磁盘......

$file = tempnam("tmp", "zip");
$zip = new ZipArchive();
$zip->open($file, ZIPARCHIVE::CREATE);
$zip->addEmptyDir('newDirectory');
$zip->addFromString('newDirectory/demo.txt', 'file contents');
$zip->close();

// Stream the file to the client 
header('Content-Type: application/zip'); 
header('Content-Length: ' . filesize($file)); 
header('Content-Disposition: attachment; filename="some_archive_file.zip"'); 
readfile($file); 
unlink($file);

如果您希望在不保存档案的情况下流式传输档案,可以尝试查看PHPZip class

答案 1 :(得分:0)

您可以将passthru与命令行归档实用程序结合使用,即:

passthru("tar dir0/ dir1/ dir2/dir23/dir234/ dir4/file4.txt | gzip -f");