Heim  >  Artikel  >  Backend-Entwicklung  >  So komprimieren Sie Dateien in PHP

So komprimieren Sie Dateien in PHP

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-09-29 14:58:474307Durchsuche

So komprimieren Sie Dateien in PHP

Eine Datei komprimieren

Wir generieren ein komprimiertes Paket aus einer Datei.

<?php
$path = "c:/wamp/www/log.txt";
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);   //打开压缩包
$zip->addFile($path,basename($path));   //向压缩包中添加文件
$zip->close();  //关闭压缩包

Der obige Code komprimiert die Datei c:/wamp/www/log.txt in test.zip und speichert sie im aktuellen Verzeichnis.

Verwandte Empfehlungen: „PHP-Einführungs-Tutorial

Mehrere Dateien komprimieren

Mehrere Dateien komprimieren, was eigentlich die Ausführung von addFile ist Mehrere Male können durch Durchlaufen des Arrays erreicht werden.

<?php
$fileList = array(
    "c:/wamp/www/log.txt",
    "c:/wamp/www/weixin.class.php"
);
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);   //打开压缩包
foreach($fileList as $file){
    $zip->addFile($file,basename($file));   //向压缩包中添加文件
}
$zip->close();  //关闭压缩包

Komprimieren Sie ein Verzeichnis

<?php
function addFileToZip($path,$zip){
    $handler=opendir($path); //打开当前文件夹由$path指定。
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){//文件夹文件名字为&#39;.&#39;和‘..’,不要对他们进行操作
            if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
                addFileToZip($path."/".$filename, $zip);
            }else{ //将文件加入zip对象
                $zip->addFile($path."/".$filename);
            }
        }
    }
    @closedir($path);
}
$zip=new ZipArchive();
if($zip->open(&#39;rsa.zip&#39;, ZipArchive::OVERWRITE)=== TRUE){
    addFileToZip(&#39;rsa/&#39;, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
    $zip->close(); //关闭处理的zip文件
}

Komprimieren Sie das Zip-Paket und laden Sie es herunter

In meinem Fall müssen wir es verpacken und laden Sie das komprimierte Paket herunter und löschen Sie es.

kann in die folgenden Schritte unterteilt werden:

(1) Bestimmen Sie, ob der angegebene Pfad ein Ordner oder eine Datei ist. Der Ordner muss auch durchlaufen werden, um Dateien hinzuzufügen.

(2) Legen Sie den relevanten Dateiheader fest und verwenden Sie die Readfile-Funktion, um den Download bereitzustellen.

(3) Verwenden Sie die Funktion zum Aufheben der Verknüpfung, um das komprimierte Paket zu löschen.

<?php
function addFileToZip($path,$zip){
    $handler=opendir($path); //打开当前文件夹由$path指定。
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){//文件夹文件名字为&#39;.&#39;和‘..’,不要对他们进行操作
            if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
                addFileToZip($path."/".$filename, $zip);
            }else{ //将文件加入zip对象
                $zip->addFile($path."/".$filename);
            }
        }
    }
    @closedir($path);
}
$zip=new ZipArchive();
if($zip->open(&#39;rsa.zip&#39;, ZipArchive::OVERWRITE)=== TRUE){
    $path = &#39;rsa/&#39;;
    if(is_dir($path)){  //给出文件夹,打包文件夹
        addFileToZip($path, $zip);
    }else if(is_array($path)){  //以数组形式给出文件路径
        foreach($path as $file){
            $zip->addFile($file);
        }
    }else{      //只给出一个文件
        $zip->addFile($path);
    }
    $zip->close(); //关闭处理的zip文件
}

Das obige ist der detaillierte Inhalt vonSo komprimieren Sie Dateien in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn