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);
  • 相关阅读:
    Linux常用命令琐记
    JDK 在linux下支持epoll了
    八卦
    JDK 1.6中的并发
    关于Atomic
    关于并发程序设计(二)
    关于并发程序设计 (一)
    Herb Sutter的一些观点
    想到Exchanger N parties的一种用法
    该拒绝MSN Messager了
  • 原文地址:https://www.cnblogs.com/zhaoying/p/15156135.html
Copyright © 2011-2022 走看看