使用PHP将文件添加到ZIP会导致失败

时间:2015-02-04 12:32:10

标签: php file zip

对于自动下载页面,我希望能够快速将我想要共享的文件添加到目录files,以便创建该文件夹中所有文件的ZIP。

该目录如下所示:

index.php
   |- files
         |- file1.jpg
         |- file2.jpg
         |- file3.jpg
         |- etc ...

现在,我在index.php中有以下代码:

$dir = "files";
$dh  = opendir($dir);
$zip = new ZipArchive;
$zip->open('file.zip', ZipArchive::CREATE);

while (false !== ($filename = readdir($dh))) {
    if ($filename !== "." && $filename !== "..") {
        $files[] = $filename;
    }
}

foreach ($files as $file) {
    $zip->addFile($file,basename($file));
}
$zip->close();

当我var_dump($files)时,我会收到“file1.jpg”等文件列表,但是当我var_dump($zip)时,我得到了:

object(ZipArchive)#1 (5) { ["status"]=> int(0) ["statusSys"]=> int(0) ["numFiles"]=> int(0) ["filename"]=> string(0) "" ["comment"]=> string(0) "" }

任何人都可以帮我解决这个问题吗? 所有文件都有644访问和目录755,我认为这可能不是问题。

谢谢

更新:我发现将文件添加到ZIP的问题,但现在我无法弄清楚如何下载创建的zip,因为它在尝试访问创建的zip时获得404。更新了一段代码:

foreach ($files as $file) {
   $zip->addFile($dir . '/' . $file);
}

1 个答案:

答案 0 :(得分:0)

为什么不尝试使用:exec()来压缩文件?

php.net