zoukankan      html  css  js  c++  java
  • PHP在线压缩文件夹并下载

    使用环境为php7.3

         function createZip($openFile,$zipObj,$sourceAbso,$newRelat = '')
            {
                while(($file = readdir($openFile)) != false)
                {
                    if($file=="." || $file=="..")
                        continue;
    
                    /*源目录路径(绝对路径)*/
                    $sourceTemp = $sourceAbso.'/'.$file;
                    /*目标目录路径(相对路径)*/
                    $newTemp = $newRelat==''?$file:$newRelat.'/'.$file;
                    if(is_dir($sourceTemp))
                    {
                        //echo '创建'.$newTemp.'文件夹<br/>';
                        $zipObj->addEmptyDir($newTemp);/*这里注意:php只需传递一个文件夹名称路径即可*/
                        createZip(opendir($sourceTemp),$zipObj,$sourceTemp,$newTemp);
                    }
                    if(is_file($sourceTemp))
                    {
                        //echo '创建'.$newTemp.'文件<br/>';
                        $zipObj->addFile($sourceTemp,$newTemp);
                    }
                }
            }
    
    
    //创建<span style="font-family: Arial, Helvetica, sans-serif;">ZipArchive对象</span>
            $exportPath= $_SERVER['DOCUMENT_ROOT'].'/json';
            $filename=$exportPath.'.zip';
            $zip = new ipArchive();
    //参数1:zip保存路径,参数2:ZIPARCHIVE::CREATE没有即是创建
            if(!$zip->open($filename,IPARCHIVE::CREATE))
            {
                echo "创建[exportPath.zip]失败<br/>";return;
            }
    //echo "创建[$exportPath.zip]成功<br/>";
            createZip(opendir($exportPath),$zip,$exportPath);
            $zip->close();
    
            header("Cache-Control: public");
            header("Content-Description: File Transfer");
            header('Content-disposition: attachment; filename='.basename($filename)); //文件名
            header("Content-Type: application/zip"); //zip格式的
            header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
            header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小
            @readfile($filename);
  • 相关阅读:
    kubernetes 中遇见的一些坑(持续更新)
    Docker网络解决方案-Flannel部署记录
    理解Docker :Docker 网络
    全面剖析Redis Cluster原理和应用
    python发送钉钉机器人脚本
    centos 7 部署LDAP服务
    zabbix 同步ldap帐号脚本
    zabbix TCP 连接数监控
    WebDriver基本操作入门及UI自动化练手页面
    Jmeter使用入门
  • 原文地址:https://www.cnblogs.com/zhaoying/p/15156135.html
Copyright © 2011-2022 走看看