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);
  • 相关阅读:
    给数组赋值nan
    loc和iloc的区别
    爬虫26-部署crawl爬虫
    爬虫25-scrapy框架详解
    爬虫24-scrapy框架部署
    爬虫23-验证码识别
    爬虫22-使用selenium爬取信息
    爬虫21-selenium用法
    爬虫20-浏览器自动运行简单方法
    爬虫19-线程生产者和消费者以及队列
  • 原文地址:https://www.cnblogs.com/zhaoying/p/15156135.html
Copyright © 2011-2022 走看看