/*********************************************/
/* 将多个文件压缩成一个zip文件的函数 */
/*
* @create a compressed zip file 将多个文件压缩成一个zip文件的函数
* @$files 数组类型 实例array("1.jpg", "2.jpg");
* @$destination 目标文件的路径 如"c:/androidyue.zip"
* @$overwrite 是否为覆盖与目标文件相同的文件
*/
function create_zip($files = array(), $destination = '', $overwrite =fales)
{
// 如果zip文件已经存在并且设置为不重写返回false
if (file_exists($destination) && !$overwrite)
{
return false;
}
$valid_files = array();
// 获取到真实有效的文件名
if (is_array($files))
{
foreach ($files as $file)
{
if (file_exists($file))
{
$valid_files[] = $file;
}
}
}
// 如果存在真实有效的文件
if (count($valid_files))
{
$zip = new ZipArchive();
// 打开文件 如果文件已经存在则覆盖,如果没有则创建
if ($zip->open($destination, $overwrite ?
ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true)
{
return false;
}
// 向压缩文件中添加文件
foreach ($valid_files as $file)
{
$zip->addFile($file);
}
// 关闭文件
$zip->close();
// 检查文件是否存在
if (file_exists($destination))
{
echo 'true';
}
}
else
{
// 如果没有真是有效的文件返回false
return false;
}
}
$files = array('tmp.php', 'test.php');
create_zip($files, 'myzipfile.zip', true);
sleep(5);
/*********************************************/
/*********************************************/
/* 解压需要的文件 */
/*
* @$file - path to zip file 需要解压的文件的路径
* @$destination - destination directory for unzipped files 解压之后存
放的路径
* @需要使用 ZZIPlib library,请确认该扩展已经开启
*/
function unzip_file($file, $destination)
{
// 实例化对象
$zip = new ZipArchive();
// 打开zip文档,如果打开失败返回提示消息
if ($zip->open($file) !== true)
{
die('could not open archive');
}
// 将压缩文件解压到指定的目录下
$zip->extractTo($destination);
// 关闭zip文档
$zip->close();
echo 'Archive extractecd to directory';
}
unzip_file('myzipfile.zip', 'test');
/*********************************************/