简体   繁体   English

php zip存档已创建但为空

[英]php zip archive is created but empty

i try to create a zip archive of pdf files like this:我尝试创建 pdf 文件的 zip 存档,如下所示:

$path = str_replace('\\', '/',WP_CONTENT_DIR . '/uploads/pdf-files');

$zip = new ZipArchive();

$filename = str_replace('\\', '/', WP_CONTENT_DIR . '/uploads/pdf-files/zip-file.zip');

if($zip->open($filename, ZipArchive::CREATE) !== true) {
    die("Error open");
}

if(is_dir($path)) {
    if($dh = opendir($path)) {
        while(($file = readdir($dh)) !== false) {
            $file_parts = pathinfo($file);

            if($file_parts['extension'] == 'pdf') {
                if($zip->addFile($path . '/' . $file) !== true) {
                    die("Error addFile");
                } else {
                    echo $file . "\n";
                }
            }
        }

        closedir($dh);
    }
}

if($zip->close() !== true) {
    die("Error close");
}

echo content_url('uploads/pdf-files/zip-file.zip');

wp_die();

All expected files echo in the else.所有预期的文件都在 else 中回显。 But the zip archive is empty.但是 zip 存档是空的。 Why?为什么?

This code should return an url to the zip archive, for download it via javascript.此代码应返回 zip 存档的 url,以便通过 javascript 下载。

In found a solution.在找到了解决办法。 If i put a second argument (filename) to addFile it works:如果我将第二个参数(文件名)添加到addFile它会起作用:

$zip->addFile($path . '/' . $file, $file);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM