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打包

相关文章

windows下开发并编译PHP扩展的方法

现在就简单说一在WINDOWS下开发PHP扩展的步骤: 首先需要准备的软件有: cygwin 安装路径e:\app\cygwin visual studio C++ 6.0, 修改环境变...

PHP读取CURL模拟登录时生成Cookie文件的方法

PHP读取CURL模拟登录时生成Cookie文件的方法

本文实例讲述了PHP读取CURL模拟登录时生成Cookie文件的方法。分享给大家供大家参考。具体实现方法如下: 在使用PHP中的CURL模拟登录时会保存一个Cookie文件,例如下面的代...

php判断类是否存在函数class_exists用法分析

本文实例分析了php判断类是否存在函数class_exists用法。分享给大家供大家参考。具体如下: 如果我们要判断一个类是不是可以用,可以先使用class_exists函数来判断一下,...

修改Zend引擎实现PHP源码加密的原理及实践

一、基本原理   考虑截获PHP读取源文件的接口。一开始,我考虑从Apache和PHP 之间的接口处处理,参见apache的src/modules/php4/mod_php4.c...

PHP获取文件夹内文件数的方法

本文实例讲述了PHP获取文件夹内文件数的方法。分享给大家供大家参考。具体实现方法如下: function getfilecounts($ff){ $dir = './'.$ff;...