【问题标题】:Adding files to ZIP with PHP keeps failing使用 PHP 将文件添加到 ZIP 一直失败
【发布时间】:2015-02-04 12:32:10
【问题描述】:

对于自动下载页面,我希望能够快速将我想共享的文件添加到目录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);
}

【问题讨论】:

    标签: php file zip


    【解决方案1】:

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

    php.net

    【讨论】:

    • 这有什么帮助?我仍然需要代码来压缩文件,只有exec() 如果我正确理解 php.net 页面,它将在外部程序中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多