当前位置:首页 > 常见问题 > php相关

php多文件打包压缩下载简单示例

来源:原创    更新时间:2022-12-13 22:14:08    编辑:管理员    浏览:639

调用php中内置扩展ZipArchive类可以进行文件压缩打包下载,(PHP 5>=5.2.0,PHP 7,PECL zip>=1.1.0)

简单示例:

<?phpfunction 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');?>