php自帶ziparchive 類,打包就靠這個了。最簡單的就是打包單檔案而非資料夾, 先從簡單的來。先確保zip擴充套件已載入,確保打包的原始檔(夾)存在, 否則退出
if (!extension_loaded('zip') || !file_exists($source))
$zip = new ziparchive();
if (!$zip->open($destination, ziparchive::create))
$zip->addfromstring(basename($source), file_get_contents($source));
在打包資料夾之前, 我們需要遍歷資料夾,並把資料夾新增到壓縮包。在遍歷這一步, 我發現很多中文的資料還是採用很古老的方式, 而php早就提供了內建類,這裡需要用到兩個類the recursivedirectoryiterator class及the recursiveiteratoriterator class
recursivedirectoryiterator提供遞迴遍歷檔案系統目錄的介面,recursiveiteratoriterator可用於通過遞迴迭代器進行遍歷,我們開始吧
$files = new recursiveiteratoriterator(new recursivedirectoryiterator($source), recursiveiteratoriterator::self_first);
我們選擇recursiveiteratoriterator::self_first,因為需要保留目錄。目前為止,我們還缺少乙個將目錄新增到壓縮包的函式,php官方自帶ziparchive::addemptydir,下面是打包資料夾的**
foreach ($files as $file)
else if (is_file($file) === true)
}
到這就基本完成了,下面是完整的打包函式
/** 遞迴打包資料夾
* @param $source
* @param $destination
* @return bool
*/function zip($source, $destination)
$zip = new ziparchive();
if (!$zip->open($destination, ziparchive::create))
$source = str_replace('\\', '/', realpath($source));
if (is_dir($source) === true)
else if (is_file($file) === true)}}
else if (is_file($source) === true)
return $zip->close();
}
Linux下壓縮某個資料夾(資料夾打包)
tar zcvf home xahot.tar.gz xahot tar zcvf 打包後生成的檔名全路徑 要打包的目錄 例子 把 xahot資料夾打包後生成乙個 home xahot.tar.gz的檔案。zip 壓縮方法 壓縮當前的資料夾 zip r xahot.zip r表示遞迴 zip 引數 ...
LINUX下壓縮某個資料夾(資料夾打包)
tar zcvf home xahot.tar.gz xahot tar zcvf 打包後生成的檔名全路徑 要打包的目錄 例子 把 xahot資料夾打包後生成乙個 home xahot.tar.gz的檔案。zip 壓縮方法 壓縮當前的資料夾 zip r xahot.zip r表示遞迴 zip 引數 ...
Linux下壓縮某個資料夾(資料夾打包)
tar zcvf home xahot.tar.gz xahot tar zcvf 打包後生成的檔名全路徑 要打包的目錄 例子 把 xahot資料夾打包後生成乙個 home xahot.tar.gz的檔案。zip 壓縮方法 壓縮當前的資料夾 zip r xahot.zip r表示遞迴 zip 引數 ...