Codeigniter 框架的壓縮解碼類,其中的 read_dir 方法,允許你壓縮一個服務(wù)器某處存在的文件夾(以及它里面的文件和子文件夾)。
提供一個文件夾路徑,zip 類將遞歸讀取它并重新創(chuàng)建添加到存檔。 你所提供的路徑下面的所有文件都會被壓縮進來,也包括所有子文件夾。
例如:
$path = '/path/to/your/directory/';$this->zip->read_dir($path);
默認 Zip 文件會把第一個參數(shù)的完整文件夾路徑保存到Zip文件里。如果你想忽略目標路徑之前的文件夾結(jié)構(gòu),你可以傳遞 FALSE (布爾值) 到第二個參數(shù)。
例如:
$path = '/path/to/your/directory/';$this->zip->read_dir($path, false);
這將創(chuàng)建一個包括 “directory” 在內(nèi)的 ZIP 文件, 所有的子文件夾被正確地保存在里面, 但是不包括此文件夾 /path/to/your.
官方文檔只提到了兩個參數(shù),源碼里其實設(shè)置了三個:
read_dir($path, $preserve_filepath = TRUE, $root_path = NULL)
而通常,在框架運行環(huán)境內(nèi)部,取得路徑有幾種方法:
APPPATH – 對應(yīng) Codeigniter 根目錄,即 application/
FCPATH – 對應(yīng)磁盤分區(qū)根目錄,即 D:xxxcodeigniter 根目錄
當使用 FCPATH 之類的方式獲取目錄絕對路徑時,由于源碼中處理了路徑中反斜杠,導致前后 $root_path 值不一致,會出現(xiàn)第二參數(shù) false 設(shè)置無效的問題。
參考資料:http://codeigniter.org.cn/user_guide/libraries/zip.html