PHP操作ZIP之ZipArchive类

<?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);
 
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容