从目录中的文件数组创建Zip

时间:2013-02-19 19:56:10

标签: php arrays zip

我正在尝试从我服务器上的文件夹中包含的文件创建一个Zip文件。

这是我的代码:

$zip = new ZipArchive();
$dirArray = array();
$new_zip_file = $temp_unzip_path.'test_new_zip.zip';

$new = $zip->open($new_zip_file, ZIPARCHIVE::CREATE);
if ($new === TRUE) {
    $handle = opendir($temp_unzip_path);
    while (false !== ($entry = readdir($handle))) {
    $dirArray[] = $entry;
    }
    print_r ($dirArray);
    closedir($handle);
} else {
    echo 'Failed to create Zip';
}

$zip->close();

我是PHP的新手,所以我试图从PHP手册和我在网上找到的一些例子中将它拼凑在一起。

我暂时将print_r放在那里,以确保将条目添加到数组中 - 这是我计划将来使用其余zip函数的地方。

我的问题是它没有打印任何东西,所以我不知道这些文件是否会被添加到zip中。

我的代码可能都错了(我希望不是)所以,如果有人能指出我正确的方向,我会非常感激。

感谢。

1 个答案:

答案 0 :(得分:3)

我稍微修改了你的代码,它创建了一个没有任何问题的zip文件。 如果这不起作用,请检查目录mydirectory

中的权限
<pre><?
$temp_unzip_path = './mydirectory/';
$zip = new ZipArchive();
$dirArray = array();
$new_zip_file = $temp_unzip_path.'test_new_zip.zip';

$new = $zip->open($new_zip_file, ZIPARCHIVE::CREATE);
if ($new === true) {
    $handle = opendir($temp_unzip_path);
    while (false !== ($entry = readdir($handle))) {
        if(!in_array($entry,array('.','..')))
        {
            $dirArray[] = $entry;
            $zip->addFile($temp_unzip_path.$entry,$entry);
        }
    }
    print_r ($dirArray);
    closedir($handle);
} else {
    echo 'Failed to create Zip';
}

$zip->close();
?>