PHP
- 11/02/2010
Komprimieren von Dateien mit PHP
Hallo, heute werde ich Ihnen zeigen, wie man mit PHP-Datei zu komprimieren. Das Verfahren ist sehr einfach, wenn Ihr Server ist die zlib fähigen führen Sie einfach einen Code wie folgt aus:
- <?
- / **
- * Fügt eine Datei innerhalb eines Zip.
- *
- * @ Param string $ name name_of_zip ZIP-Datei, die bearbeitet werden sollen.
- * @ Param string $ path_file Pfad Original-Datei, die dem ZIP geht
- * @ Param string $ dateiname Name der Datei in der ZIP
- * @ Return mixed
- * /
- $name_of_zip = null , $path_file = null , $file_name = null ) { fileToZip Funktion ($ name_of_zip = null, $ path_file = null, $ file_name = null) {
- ; zurückkehren "Alle Parameter sind erforderlich ';
- }
- / / Erstellen der Instanz von ZIP
- ZipArchive; $ Zip = new ZipArchive;
- / / Wenn nicht die ZIP-Datei erstellen
- $zip -> open ( $name_of_zip , ZIPARCHIVE:: CREATE ) === true ) { if ($ zip -> open ($ name_of_zip, ZIPARCHIVE :: CREATE) === true) {
- / / Fügen Sie die Datei im Zip-
- ( $path_file , $file_name ) ; $ Zip -> AddFile ($ path_file, $ datei);
- ( ) ; // fecha a conexão com o ZIP $ Zip -> close () / / enge Verbindung mit dem ZIP-
- / / Optional können Sie die ursprüngliche Datei zu löschen, legen Sie einfach eine Variable in den Parametern
- / / Unlink ('/ pfad / zu / Datei / datei.php');
- ; return true;
- { Else {}
- ; return false;
- }
- }
- ?>
Dieser Beitrag ist eine Ergänzung zu den Wie-Dateien mit PHP entpacken und zusammen können wir eine sehr nützliche Klasse verwandeln.
Mal sehen, ob es funktioniert? Ich spiele diese Rolle und Funktion der früheren Post in eine Datei und starten Sie zu sehen, ob die Datei korrekt erstellt wurde:
- <?
- / **
- * Fügt eine Datei innerhalb eines Zip.
- *
- * @ Param string $ name name_of_zip ZIP-Datei, die bearbeitet werden sollen.
- * @ Param string $ path_file Pfad Original-Datei, die dem ZIP geht
- * @ Param string $ dateiname Name der Datei in der ZIP
- * @ Return mixed
- * /
- $name_of_zip = null , $path_file = null , $file_name = null ) { fileToZip Funktion ($ name_of_zip = null, $ path_file = null, $ file_name = null) {
- ; zurückkehren "Alle Parameter sind erforderlich ';
- }
- / / Erstellen der Instanz von ZIP
- ZipArchive; $ Zip = new ZipArchive;
- / / Wenn nicht die ZIP-Datei erstellen
- $zip -> open ( $name_of_zip , ZIPARCHIVE:: CREATE ) === true ) { if ($ zip -> open ($ name_of_zip, ZIPARCHIVE :: CREATE) === true) {
- / / Fügen Sie die Datei im Zip-
- ( $path_file , $file_name ) ; $ Zip -> AddFile ($ path_file, $ datei);
- ( ) ; // fecha a conexão com o ZIP $ Zip -> close () / / enge Verbindung mit dem ZIP-
- / / Optional können Sie die ursprüngliche Datei zu löschen, legen Sie einfach eine Variable in den Parametern
- / / Unlink ('/ pfad / zu / Datei / datei.php');
- ; return true;
- { Else {}
- ; return false;
- }
- }
- / **
- * Diese Funktion dekomprimiert Dateien
- * Ein zip
- *
- * @ Param string $ path Pfad zu den Dateien. Zip
- * @ Param string $ pathunzip Ordner, in dem Dateien entpackt werden sollen
- * /
- $path , $pathunzip = '.' ) { Funktion unzip ($ path, $ pathunzip = '.') {
- # === - Instanziiert die Klasse von Zip
- ZipArchive; $ Zip = new ZipArchive;
- # === - Versuchen Sie, den Reißverschluss zu öffnen
- $zip -> open ( $path ) ) { if ($ zip -> open ($ path)) {
- -> extractTo ( $pathunzip ) ; // executa o unzip $ Return = $ zip -> extractTo ($ pathunzip) / / Ausführen des unzip
- ( ) ; // fecha a coneção com o .zip $ Zip -.> Close () / / Verbindung schließen oder mit Zip
- { Else {}
- }
- }
- / **
- * Diese Funktion gibt ein Array mit
- * File-Namen, die sind
- * In dem zip.
- *
- * @ Param string $ path Pfad zu den Dateien. Zip
- * @ Return Array oder FALSE bei einem Fehler
- * /
- $path ) { zipToArray Funktion ($ path) {
- # === - Instanziiert die Klasse
- ZipArchive; $ Zip = new ZipArchive;
- # ==== - Versuchen Sie, den Reißverschluss zu öffnen
- $zip -> open ( $path ) ) { if ($ zip -> open ($ path)) {
- # === - Ruft die Anzahl der ZIP-Dateien
- -> numFiles ; Num_files $ = $ zip -> numFiles;
- # === - Führt die Dateien unter Namen und setzen in einem Array
- $i = 0 ; $i <= ( $num_files ) -1 ; $i ++ ) { for ($ i = 0; $ i <= ($ num_files) -1; $ i + +) {
- = $zip -> getNameIndex ( $i ) ; $ Ausgabe [] = $ zip -> getNameIndex ($ i);
- }
- # ==== - Schließt die Verbindung
- ( ) ; $ Zip -> close ();
- # ==== - Retora das Array manipuliert werden
- ; return $ ausgegeben;
- }
- ; return false;
- }
- / / Hinzufügen von Dateien
- , './texto.txt' , 'texto.txt' ) ; fileToZip ('. / nome_do_zip.zip',, 'test.txt' '/ text.txt.');
- , './texto.txt' , 'texto2.txt' ) ; fileToZip ('. / nome_do_zip.zip',, 'texto2.txt' '/ text.txt.');
- / / Lesen Sie die Zip-Datei erstellt, um zu sehen, ob es eine Datei innerhalb
- ?>
Sehen Sie das Ergebnis:
Ich werde einen Posten auf, wie eine Klasse mit diesen Features bald zu schaffen machen.
Für heute ist es ...




4 Kommentare zu "Komprimieren von Dateien mit PHP"
Marcelão gut ... wie immer strahlen in Beiträgen!
So, gesprochen hatte, hatte auf eine generische Klasse, ist aber nicht .. lol .. nicht generischen aber da es ein wenig anders als deine ist, folgen Sie den Code dort für Anregungen und Verbesserungsvorschläge ... funktioniert prima ... aber ich möchte mit der richtigen Ideologie OO arbeiten ... so helfen Sie mir! : P
<PHP
/ **
* Klasse Zip - Um zip Bilder eines Flusses diretï ¿½
*
* @ Autor Rafael Ortega Bueno
* @ Parameter $ path = Ordnerpfad
* @ Parameter name = $ name wird die neue Datei
** /
{Klasse Zipador
öffentliche Funktion zip ($ path, $ folder) {
$ PATH = $ PATH "/".;
$ Size = strlen ("$-Ordner");
for ($ i = 0; $ i <$ size, $ i + +) {
if (substr ($ folder, $ i, 1) == "/") {
$ FileName = substr ($ Ordner ($ i +1), $ size);
}
}
/ / - Above Jhonatan
$ Dir = opendir ($ path);
$ X = Array ();
while ($ file = readdir ($ dir)) {
array_push ($ x, $ file);
}
for ($ i = 0; iOpen $ (". $ {} new_name zip" ZIPARCHIVE :: CREATE) === true) {
$ Zip-> AddFile ($ path $ X [$ i], $ x [$ i].);
$ Zip-> close ();
print "Datei erfolgreich gezippt";
}
else {
print "Ihre Probleme zip-Datei";
}
}
}
return " Datei herunterladen ";
/ / Echo "location.href = '$ new_name.zip'";
}
/ / ------------
public function buscaNomePasta ($ id) {
$ Database = mysql_query ("SELECT FROM Dateiversand
WO idenvio = $ id ");
while ($ row = mysql_fetch_array ($ database)) {
$ Folder = $ row ['Datei'];
}
return $-Ordner;
}
}
?>
Von Rafael Ortega Bueno (6 Kommentare) am 2010.12.02
Können Sie das klären Sie eine Frage?
Wie erstelle ich die Datei in mehrere Teile?
Ich habe einen cron, die ein Backup erzeugt (bd) und dann schicken Sie Paket wurde normal arbeiten ......
aber jetzt die Sicherung ist etwa 200MB.
und die Zeit, um den Fehler zu komprimieren, es nicht komprimiert ...
gedacht, um in mehrere Teile zu komprimieren ... weiß nicht, wenn du kannst ..
danke
Durch Laureano (1 Kommentare) am 2011.09.03
Kerl mochte einfach und unkompliziert.
Danke.
Von Joshua (4 Kommentare) am 27/08/2011
<PHP
/ / Autor: Luis Estelvio
/ / Datum: 2011.08.12
/ / Erzeuge den Pfad
Dwloaddir $ = "Pfad";
/ / Prüfen, ob der Ordner vorhanden ist, sonst schafft
! Is_dir ($ dwloaddir)? mkdir ($ dwloaddir, 0777): "";
$ Datei = fopen ($ dwloaddir "/" "Teste_1.txt", "w"..);
for ($ i = 0; $ i <10; $ i + +) fwrite ($ file, "Test Test Test Test \ n");
fclose ($ file);
$ Datei = fopen ($ dwloaddir "/" "Teste_2.txt", "w"..);
for ($ i = 0;! $ i open ($ filename, ZIPARCHIVE :: CREATE) == true) {
exit ("Konnte Datei nicht öffnen \ n");
}
$ Zip-> AddFile ($ dwloaddir "/ Teste_1.txt", "teste_1.txt".);
$ Zip-> AddFile ($ dwloaddir "/ Teste_2.txt", "teste_2.txt".);
$ Zip-> close ();
?>
Für Estelvio (1 Kommentare) am 2011.06.12