PHP下载压缩包文件
2024-08-28 13:23:11
PHP 压缩文件需要用到 ZipArchive
类,Windows 环境需要打开 php_zip.dll
扩展。
压缩文件
$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();
压缩目录
/**
* @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();
}
解压缩
$zip = new ZipArchive();
$res = $zip->open('test1.zip');
if($res)
{
// 解压缩文件到指定目录
$zip->extractTo('test');
$zip->close();
}
下载压缩包
下载压缩包需要先将目标目录压缩,然后下载压缩包,最后删除压缩包。
在压缩目录示例中,追加以下代码:
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');
最新文章
- mysql数据库乱码的问题解决
- BZOJ4690: Never Wait for Weights
- C# 消息队列
- JS 退出系统并跳转到登录界面的实现代码
- asp.net 微信企业号办公系统-表单及流程设计配置实例
- HTML5媒体
- js(引用类型和setTimeout scope)
- 【转】Facebook React 和 Web Components(Polymer)对比优势和劣势
- 活生生的例子:qInstallMessageHandler接受指定类型的函数指针,这样就可以随心所欲的让程序员自定义函数名以及函数位置
- 来自一位工作一年多的猿的分享 ------- ioc
- (cljs/run-at (JSVM. :browser) ";简单类型可不简单啊~";)
- 视觉SLAM
- django获取ip与数据重复性判定
- 在虚拟机里连接PLC S7-200
- java如何获取一个对象的大小【转】
- Daily record-December
- mysql的常用操作
- python3-元类
- hibernate框架学习之二级缓存(测试用例)
- Can you find it?(数组+二分hdu2141)