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

相关文章

JSON在PHP中的应用介绍

从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。 一、json_encode() 该函数主要用来将数组和对象,转换...

PHP实现的一致性哈希算法完整实例

本文实例讲述了PHP实现的一致性哈希算法。分享给大家供大家参考,具体如下: <?php /** * Flexihash - A simple consistent h...

THINKPHP内容分页代码分享

在使用Thinkphp开发的内容管理系统里面,很多东西都要自己开发,内容分页当然也是要自己开发的,下面是我根据查资料自己整理的方法: 1、首先是在后台编辑内容的时候需要插入分页符,不同的...

php漏洞之跨网站请求伪造与防止伪造方法

伪造跨站请求介绍伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。这种攻击常见的表现形式有:   伪造链接,引诱用户点击,或是让用户在不...

Joomla下利用configuration.php存储简单数据

写入过程 复制代码 代码如下: // Get the path of the configuration file $fname = JPATH_CONFIGURATION.DS.'co...