PHP下载压缩包文件(zt)
压缩文件
PHP
$zip = new ZipArchive();
// 打开一个zip文档,ZipArchive::OVERWRITE:如果存在这样的文档,则覆盖;ZipArchive::CREATE:如果不存在,则创建
$res = $zip->open('test.zip', ZipArchive::OVERWRITE | ZipArchive::CREATE);
if($res)
{
// 添加 a.txt 到压缩文档
$zip->addFile('a.txt');
// 添加一个字符串到压缩文档中的b.txt
$zip->addFromString('b.txt', 'this is b.txt');
// 添加一个空目录b到压缩文档
$zip->addEmptyDir('b');
}
// 关闭打开的压缩文档
$zip->close();
压缩文件夹
PHP
/**
* @param $dir 目标目录路径
* @param $zip ZipArchive类对象
* @param $prev
*/
function compressDir($dir, $zip, $prev='.')
{
$handler = opendir($dir);
$basename = basename($dir);
$zip->addEmptyDir($prev . '/' . $basename);
while($file = readdir($handler))
{
$realpath = $dir . '/' . $file;
if(is_dir($realpath))
{
if($file !== '.' && $file !== '..')
{
$zip->addEmptyDir($prev . '/' . $basename . '/' . $file);
compressDir($realpath, $zip, $prev . '/' . $basename);
}
}else
{
$zip->addFile($realpath, $prev. '/' . $basename . '/' . $file);
}
}
closedir($handler);
return null;
}
$zip = new ZipArchive();
$res = $zip->open('test.zip', ZipArchive::OVERWRITE | ZipArchive::CREATE);
if($res)
{
compressDir('./test', $zip);
$zip->close();
}
解压缩
PHP
$zip = new ZipArchive();
$res = $zip->open('test1.zip');
if($res)
{
// 解压缩文件到指定目录
$zip->extractTo('test');
$zip->close();
}
下载
PHP
header('Content-Type:text/html;charset=utf-8');
header('Content-disposition:attachment;filename=test.zip');
$filesize = filesize('./test.zip');
readfile('./test.zip');
header('Content-length:'.$filesize);
unlink('./test.zip');
登录后可发表评论
点击登录