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

yipeiwu_com7年前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中批量生成静态html(命令行下运行PHP)

PHP中批量生成静态html(命令行下运行PHP)

众所周知,大部分网站的新闻资讯或商品信息都是静态页面。这样做的好处主要是为了:1、加快访问速度,避免过多的操作数据库;2、SEO优化,便于搜索引擎收录。 本示例围绕 CMS 系统的静态页...

PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例

本文实例讲述了PHP连接MSSQL2008/2005数据库(SQLSRV)配置方法,分享给大家供大家参考。具体方法如下: PHP连接MSSQL2008/2005数据库与以往的连接mssq...

PHP使用curl_multi_select解决curl_multi网页假死问题的方法

本文实例讲述了PHP使用curl_multi_select解决curl_multi网页假死问题的方法。分享给大家供大家参考,具体如下: curl_multi可以批处理事务,给网页编程带来...

php自定义分页类完整实例

本文实例讲述了php自定义分页类。分享给大家供大家参考,具体如下: <?php header("Content-type:text/html;Charset=utf-8...

分析PHP中单双引号的误区和双引号小隐患

分析PHP中单双引号的误区和双引号小隐患

许多程序员以为在PHP中单引号和双引号是一样的,其实这要看怎么用法,在有些方面它们确实是一样,但有一些方面它们也有着很大的区别,今天小编就来为您说说有哪些区别。 1、一般情况下两者是通...