2014-09-29 42 views
1

由於作爲標題簡單:如何使用PHP ZipArchive :: addPattern添加相對路徑?

$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文件:

所以我打開生成的ZIP和有:

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

但是,我想獲得:

file1.csv 
file2.csv 
file3.csv 

不當然還有什麼可以嘗試?

+0

你嘗試' 'remove_all_path'=> TRUE' – AbraCadaver 2014-09-29 17:22:58

+0

葉氏......還有,我試過addGlob功能,如:。 $ zip-> addGlob($文件夾名DIRECTORY_SEPARATOR的 「* .csv」,GLOB_BRACE,[ 'remove_all_path'=> TRUE]); – mimoralea 2014-09-29 17:27:20

回答

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函數。