调用php中内置扩展ZipArchive类可以进行文件压缩打包下载,(PHP 5>=5.2.0,PHP 7,PECL zip>=1.1.0)
调用php中内置扩展ZipArchive类可以进行文件压缩打包下载,(PHP 5>=5.2.0,PHP 7,PECL zip>=1.1.0)
简单示例:
<?php
function zipfile($file_path){
// 压缩多个文件
$fileList = explode(',', $file_path);
$filename = time() . ".zip"; // 压缩包所在的位置路径
$zip = new ZipArchive();
$zip->open($filename, ZipArchive::CREATE); //打开压缩包
foreach ($fileList as $file) {
$zip->addFile($file, basename($file)); //向压缩包中添加文件
}
$rs = $zip->close(); //关闭压缩包
//下载文件
$file = fopen($filename, "r");
//返回的文件类型
Header("Content-type: application/octet-stream");
//按照字节大小返回
Header("Accept-Ranges: bytes");
//返回文件的大小
Header("Accept-Length: " . filesize($filename));
//这里设置客户端的弹出对话框显示的文件名
Header("Content-Disposition: attachment; filename=" . $filename);
//一次性将数据传输给客户端
//echo fread($file, filesize($filePath));
//一次只传输1024个字节的数据给客户端
//向客户端回送数据
$buffer = 1024;//
//判断文件是否读完
while (!feof($file)) {
//将文件读入内存
$file_data = fread($file, $buffer);
//每次向客户端回送1024个字节的数据
echo $file_data;
}
//将生成的zip文件在服务器端删除,只需要客户端下载就行了
@unlink($filename);
}
zipfile('E:\www\test\filetest\getfile\1.jpg,E:\www\test\filetest\getfile\1.txt');
?>
ZipArchive::addEmptyDir — 添加新目录
ZipArchive::addFile — 将文件从给定路径添加到ZIP存档
ZipArchive::addFromString — 使用文件的内容将文件添加到ZIP存档
ZipArchive::addGlob — 按glob模式从目录添加文件
ZipArchive::addPattern — 按PCRE模式从目录添加文件
ZipArchive::close — 关闭活动存档(已打开或新创建)
ZipArchive::count — 统计存档中的文件数
ZipArchive::deleteIndex — 使用存档中的索引删除该项
ZipArchive::deleteName — 删除存档中使用其名称的条目
ZipArchive::extractTo — 提取存档内容
ZipArchive::getArchiveComment — 返回Zip存档注释
ZipArchive::getCommentIndex — 使用条目索引返回条目的注释
ZipArchive::getCommentName — 返回使用项名称的项的注释
ZipArchive::getExternalAttributesIndex — 检索由其索引定义的项的外部属性
ZipArchive::getExternalAttributesName — 检索由其名称定义的项的外部属性
ZipArchive::getFromIndex — 使用其索引返回项内容
ZipArchive::getFromName — 使用其名称返回条目内容
ZipArchive::getNameIndex — 返回使用其索引的项的名称
ZipArchive::getStatusString — 返回状态错误消息、系统和/或zip消息
ZipArchive::getStream — 获取由其名称定义的条目的文件处理程序(只读)
ZipArchive::isCompressionMethodSupported — 检查libzip是否支持压缩方法
ZipArchive::isEncryptionMethodSupported — 检查libzip是否支持加密方法
ZipArchive::locateName — 返回存档项的索引
ZipArchive::open — 打开压缩文件存档
ZipArchive::registerCancelCallback — 注册回调以允许在存档关闭期间取消。
ZipArchive::registerProgressCallback — 注册回调以在存档关闭期间提供更新。
ZipArchive::renameIndex — 重命名由其索引定义的项
ZipArchive::renameName — 重命名由其名称定义的项
ZipArchive::replaceFile — 用给定的路径替换ZIP存档中的文件
ZipArchive::setArchiveComment — 设置ZIP存档的注释
ZipArchive::setCommentIndex — 设置由其索引定义的项注释
ZipArchive::setCommentName — 设置由名称定义项注释
ZipArchive::setCompressionIndex — 设置由索引定义的项的压缩方法
ZipArchive::setCompressionName — 设置由名称定义的项的压缩方法
ZipArchive::setEncryptionIndex — 设置由其索引定义的项的加密方法
ZipArchive::setEncryptionName — 设置由名称定义的项的加密方法
ZipArchive::setExternalAttributesIndex — 设置由其索引定义的项的外部属性
ZipArchive::setExternalAttributesName — 设置由名称定义的项的外部属性
ZipArchive::setMtimeIndex — 设置由其索引定义的项的修改时间
ZipArchive::setMtimeName — 设置由名称定义的条目的修改时间
ZipArchive::setPassword — 设置活动存档的密码
ZipArchive::statIndex — 获取由其索引定义的项的详细信息
ZipArchive::statName — 获取由名称定义的项的详细信息
ZipArchive::unchangeAll — 撤消存档中所做的所有更改
ZipArchive::unchangeArchive — 还原存档中完成的所有全局更改
ZipArchive::unchangeIndex — 还原对给定索引项所做的所有更改
ZipArchive::unchangeName — 还原对具有给定名称的条目所做的所有更改