如何使用PHP ZipArchive :: addPattern添加相对路径?

时间:2014-09-29 17:18:41

标签: php ziparchive

标题简单:

$zipFileName = $folderName . DIRECTORY_SEPARATOR . strtolower(sprintf('bundle_%s.zip', date('F_Y', strtotime('last month'))));

$zip = new \ZipArchive();
if ($zip->open($zipFileName, \ZIPARCHIVE::CREATE )!==TRUE) {
    throw new \Exception("cannot open <$zipFileName>\n", 500);
}

$zip->addPattern('/\.csv$/', $folderName, ['remove_path' => $folderName]);
$zip->close();

这是创建一个zip文件,路径为机器上的绝对路径:

所以我打开了结果拉链并且:

/tmp/bundle/file1.csv
/tmp/bundle/file2.csv
/tmp/bundle/file3.csv

但是,我想得到:

file1.csv
file2.csv
file3.csv

不确定还有什么要尝试?

1 个答案:

答案 0 :(得分:0)

    $zip         = new \ZipArchive();
    if($zip->open($zipFullPath, \ZIPARCHIVE::CREATE) !== TRUE)
    {
        throw new \Exception("Cannot open <$zipFullPath>\n", 500);
    }
    foreach(glob($folderName . DIRECTORY_SEPARATOR . '*') as $file)
    {
        $zip->addFile($file, basename($file));
    }
    $zip->close();

这就是我最终这样做的方式。没有运气的addPattern功能。