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