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

相关文章

关于shopex同步ucenter的redirect问题,导致script不运行

首先此问题来自向这个帖子 http://hi.baidu.com/fire_love_live/item/247276cfda421217b67a24c7 需要说明的是,并非15处需要修...

redis+php实现微博(三)微博列表功能详解

本文实例讲述了redis+php实现微博列表功能。分享给大家供大家参考,具体如下: 个人主页显示微博列表(自己及关注人的微博列表) /*获取最新的50微博信息列表,列出自己发布的微博...

PHP判断远程图片或文件是否存在的实现代码

最简单的方法就是用fopen(),看看文件能否打开,能打就文件当然就存在复制代码 代码如下:<?php$url = '//www.jb51.net/images/test.jpg'...

php echo, print, print_r, sprintf, var_dump, var_expor的使用区别

/*******echo********/echo— 输出一个或多个字符串描述echo ( string arg1 [, string ...] )echo()实际上不是一个函数(它是一...

PHP取余函数介绍MOD(x,y)与x%y

取余函数 PHP取余函数 PHP两个取余 MOD(x,y) x%y MOD 例如:9/3,9是被除数,3为除数.mod函数是一个求余函数,其格式为: mod(nExp1,nExp2),...