Heim >Backend-Entwicklung >PHP-Problem >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 != ".."){//文件夹文件名字为'.'和‘..’,不要对他们进行操作 if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归 addFileToZip($path."/".$filename, $zip); }else{ //将文件加入zip对象 $zip->addFile($path."/".$filename); } } } @closedir($path); } $zip=new ZipArchive(); if($zip->open('rsa.zip', ZipArchive::OVERWRITE)=== TRUE){ addFileToZip('rsa/', $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 != ".."){//文件夹文件名字为'.'和‘..’,不要对他们进行操作 if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归 addFileToZip($path."/".$filename, $zip); }else{ //将文件加入zip对象 $zip->addFile($path."/".$filename); } } } @closedir($path); } $zip=new ZipArchive(); if($zip->open('rsa.zip', ZipArchive::OVERWRITE)=== TRUE){ $path = 'rsa/'; 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!