php 实现多个文件打包成zip压缩包下载的函数

yipeiwu_com6年前PHP代码库

PHP ZipArchive是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,

使用前首先要确保PHP ZIP扩展已经开启,不同的平台开启PHP扩增的方法网上都有。

/**
 * 把文件打包后下载
 * @param array $fromFiles 要打包的文件
 * @param string $toZipName 保存的文件名
 * @param bool $returnUrl true返回路径 false 直接下载
 * @return array
 */
function downloadFiles($fromFiles, $toZipName, $returnUrl)
{
    if (!file_exists($toZipName)) {
        $zip = new ZipArchive();
        if ($zip->open($toZipName, ZipArchive::CREATE) == TRUE) {
            foreach ($fromFiles as $val) {
                if (file_exists($val)) {
                    $zip->addFile($val, basename($val));
                }
            }
            $zip->close();
        }
    }
    if (!file_exists($toZipName)) {
        return array('msg' => '打包不成功');
    }
    // 成功后是否删除源文件
    foreach ($fromFiles as $val) {
        @unlink($val);
    }
    // 返回路径 还是直接下载
    if ($returnUrl) {
        return array('msg' => '打包成功', 'zipUrl' => $toZipName);
    } else {
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header('Content-disposition: attachment; filename=' . basename($toZipName)); //文件名
        header("Content-Type: application/zip"); //zip格式的
        header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
        header('Content-Length: ' . filesize($toZipName)); //告诉浏览器,文件大小
        @readfile($toZipName);
    }
}


调用方法:

$fromFiles = array('tmp/abc.jpg', 'tmp/abc.zip', 'tmp/abc.txt');
$toZipName = 'tmp/newZip.zip';
$returnUrl = true;
$rs = downloadFiles($fromFiles, $toZipName, $returnUrl);


 以上就是本文的全部内容,希望对大家的学习有所帮助

标签: phpzip打包

相关文章

php实现encode64编码类实例

本文实例讲述了php实现encode64编码类。分享给大家供大家参考。具体如下: encode64可以获得最短的由26个英文大小写字母数字加上"-_"两个符号编码的数据, 这个个字串可以...

微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解

微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解

本文实例讲述了ThinkPHP框架下微信支付功能。分享给大家供大家参考,具体如下: 声明:原文主要摘自白俊遥博客 ,部分内容针对个人事例已作修改,主要用于自己的参考,欢迎指正...

php中二分法查找算法实例分析

本文实例讲述了php中二分法查找算法实现方法。分享给大家供大家参考,具体如下: 二分法查找在高级点的开发可能会用到了,当然在大公司找工作时都会有面试题是这种了,下面我们来看一篇关于二分法...

PHP清除字符串中所有无用标签的方法

本文实例讲述了PHP清除字符串中所有无用标签的方法。分享给大家供大家参考。具体实现方法如下: 很多时候需要输出一些 “纯” 字符串,也就是去除任何杂质,例如 Html 标签、空格之类的文...

PHP生成随机数的方法实例分析

通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度。 复制代码...