Automatisch enzippen lassen ...

Kufstein

B1G-Software-Kunde
#1
Hi Leute ..

RICHTIG: Ich sitze wieder an meiner Bilder Gallery ..

Also ich hab mir jetzt grad des B1G -Zip Modul angeschaut. aber ich glaube damit geht das nicht was ich vor hab ..

ich will eine Zip Datei hochladen, und anschließend die darin enthaltene Bilder(dateien), in einen bestimmten Pfad enzippen, und anschließend die Zip datei wieder löschen ...

Jemand ne idee wie man sowas anstellen kann ???
 

Kufstein

B1G-Software-Kunde
#5
Also system("unzip datei.zip"); funz schon mal nicht ...



Jetzt habe ich es auch noch mit
PHP:
<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
   $zip->extractTo('/my/destination/dir/');
   $zip->close();
   echo 'ok';
} else {
   echo 'failed';
}
?>
versucht, funktioniert aber auch nicht ....
=> Fatal error: Cannot instantiate non-existent class: ziparchive in /home/www/web3/html/test.php on line 2

Ich vermute dass iich kein php mit --with-zip komplimiert habe. Weiß jemand wie ich das anschtelle (Betriebssystem Debian 3.0 ) .... nicht das ich irgendwas kaputt mache ;)


Und die Downlaod datein von Karsten funz auch nicht ,,,,
 
Last edited:

modig

B1G-Software-Kunde
#6
Huhu,
die SimpleUnZip Klasse (letzter Link) sollte Dein Problem doch lösen können. Ist astrein dokumentiert und mit Beispielen versehen.

Woody, also Debian 3.0 solltest Du langsam -aber sicher- in den Ruhestand schicken, da lauert ja schon der Nachnachfolger in den Startlöschern ;).

Karsten
 

Kufstein

B1G-Software-Kunde
#7
Huhu,
die SimpleUnZip Klasse (letzter Link) sollte Dein Problem doch lösen können. Ist astrein dokumentiert und mit Beispielen versehen.

Woody, also Debian 3.0 solltest Du langsam -aber sicher- in den Ruhestand schicken, da lauert ja schon der Nachnachfolger in den Startlöschern ;).

Karsten


Hehe, sollte mein Probelm lösen können.

Ich hab die Beispiel datei gennommen und nur die example.zip in test.zip geändert. Er enzippt es aber nicht.

PHP:
<?
    /**
     *  ZIP file unpack class.
     */

    include_once('unzip.lib.php');

    /**
     *  Sample 2
     *
     *  @author     Holger Boskugel <vbwebprofi@gmx.de>
     *  @version    1.0.1
     */

    //$oU = new SimpleUnzip('stored.example.zip');
    $oU = new SimpleUnzip('test.zip');

    $bF = FALSE;

    print("<H3>Sample 2</H3>\n");

// 2003-12-02 - HB >
    print("<B>Comment :</B>\n");
    print("{$oU->Comment}\n");
// 2003-12-02 - HB <

//    for($nI = 0; $nI < $oU->Count(); $nI++) {
//        $oI = $oU->GetEntry($nI);
//        $oI = $oU->Entries[$nI];
    foreach($oU->Entries as $oI) {
        printf("%sFile :\n" .
               " * Error = %d\n" .
               " * Errormessage = %s\n" .
               " * Filename = %s\n" .
               " * Path = %s\n" .
               " * Filetime = %s\n" .
               " * Data = #not displayed#\n",
               $nI ? "\n" : '',
               $oI->Error,
               $oI->ErrorMsg,
               $oI->Name,
               $oI->Path,
               date('Y-m-d H:i:s', $oI->Time));

        $bF = TRUE;
    }

//    print_r($oU);
?>
23

Ausgabe: Sample 2
Comment : File : * Error = 0 * Errormessage = * Filename = putty.exe * Path = * Filetime = 2006-10-31 18:55:26 * Data = #not displayed#
 

modig

B1G-Software-Kunde
#8
Na, ist doch prima -> kein Fehler.

Entferne mal die beiden // vor:
PHP:
print_r($oU);
dann siehst Du Deine Dateien aus dem Archiv. Musst sie dann nur noch speichern :).

Karsten
 

Kufstein

B1G-Software-Kunde
#9
Na, ist doch prima -> kein Fehler.

Entferne mal die beiden // vor:
PHP:
print_r($oU);
dann siehst Du Deine Dateien aus dem Archiv. Musst sie dann nur noch speichern :).

Karsten

Da kommen jetzt lauter Komishce Symbole zum vorschein, wie speichere ich die Dateien ab ???

besonders wie bekomme ich es hin, das er jede einzelnde Datei abspeichert ???
 
Last edited:

Kufstein

B1G-Software-Kunde
#11
fwrite() ... RTFM ;)
Vielen Dank ....


PHP:
$FilePointer = fopen("test.jpg", "w");

fwrite($FilePointer, $oU);

fclose($FilePointer);
aber iw bekomme ich es so, dass er mir für jede Datei, die in dem Ziparchiv dirn ist, eine Datei erstellt.

Mein Aktueller Code sieht grad so aus , funz aber nicht ...
PHP:
<?
    /**
     *  ZIP file unpack class.
     */

    include_once('../unzip.lib.php');

    /**
     *  Sample 2
     *
     *  @author     Holger Boskugel <vbwebprofi@gmx.de>
     *  @version    1.0.1
     */

    //$oU = new SimpleUnzip('stored.example.zip');
    $oU = new SimpleUnzip('test.zip');

    $bF = FALSE;

    print("<H3>Sample 2</H3>\n");

// 2003-12-02 - HB >
    print("<B>Comment :</B>\n");
    print("{$oU->Comment}\n");
// 2003-12-02 - HB <

//    for($nI = 0; $nI < $oU->Count(); $nI++) {
//        $oI = $oU->GetEntry($nI);
//        $oI = $oU->Entries[$nI];
    foreach($oU->Entries as $oI) {
        printf("%sFile :\n" .
               " * Error = %d\n" .
               " * Errormessage = %s\n" .
               " * Filename = %s\n" .
               " * Path = %s\n" .
               " * Filetime = %s\n" .
               " * Data = #not displayed#\n",
               $nI ? "\n" : '',
               $oI->Error,
               $oI->ErrorMsg,
               $oI->Name,
               $oI->Path,
               date('Y-m-d H:i:s', $oI->Time));

        $bF = TRUE;
    }
    $FilePointer = fopen("test.jpg", "w");

fwrite($FilePointer, $oU);

fclose($FilePointer);
?>
 

modig

B1G-Software-Kunde
#12
Zippe doch mal an Stelle der putty.exe eine Textdatei mi Dir bekanntem Inhalt, Z.B. "Hallo Welt" ;). Da kannst Du dann sehen, was in '$oU' wirklich drinsteckt...

Karsten
 

Kufstein

B1G-Software-Kunde
#13
Zippe doch mal an Stelle der putty.exe eine Textdatei mi Dir bekanntem Inhalt, Z.B. "Hallo Welt" ;). Da kannst Du dann sehen, was in '$oU' wirklich drinsteckt...

Karsten
Object!!!!


Ich in gut gell ;) Ich werden irgendwann mal bill gates durch ein neues Betriebssystem (natürlich in PHP geschireben) von seinem Tron runterholen *rofl*


Ne, was für ein Object is des den jetzt ?????

Wie mache ich jetzt aus dem dummen Object meine bild Dateien ? bzw Hallo Welt ????
 

Kufstein

B1G-Software-Kunde
#14
Also ich bin wie verückt am Probieren ...


irgendwie muss des mit readfile() gehen, aber ich verstehs irgendwie nicht ....

EDIT: 23:36


Ich drehe hier jetzt fast durch ..

ich habe jetzt auch schon probiert irgendiwe die zlib nachzu installieren auf meinem Server....

dass ich es irgendwie so machen kann:
PHP:
<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
   $zip->extractTo('/my/destination/dir/');
   $zip->close();
   echo 'ok';
} else {
   echo 'failed';
}
?>
aber alles gescheitert.. google auch soch den ganzen Tag aber nichts:(
 
Last edited:

modig

B1G-Software-Kunde
#15
Moin,
aber nun:
PHP:
<? 
include_once('unzip.lib.php'); 
$oU = new SimpleUnzip('test.zip'); 
foreach($oU->Entries as $oI) { 
    echo "<b>Hier der Inhalt der Datei " . $oI->Name . ": </b>" . $oI->Data, "<br />\n";
} 
?>
mit angehängter 'test.zip' ergibt:



Nun nur noch als Datei(en) wegspeichern...


Ansonsten: RTFM :D

Karsten ;)
 

Attachments

Kufstein

B1G-Software-Kunde
#17
Juhuuuuuuues klappt.


Mit dem Script was ich mir jetzt gebastellt habe kann ich viele Bilder schnell und einfach auf dem Server laden und in eine MySql Tabelle einfügen

:D
Danke ;)
 
#18
Hallo an die Leser,

hier mein Code als Autor der SimpleUnZip-Klassen, im übrigen Bestandteil von phpMyAdmin. Das Verzeichnis "./MyDirectory" müßt ihr nur noch gegen das eigene austauschen, dann wird die jeweilige Datei entsprechend ihres Namens in das Verzeichnis geschrieben mit ihren Daten. Gegebenenfalls solltet Ihr für eine Verzeichnisstruktur auch die Property Path zu rate ziehen ($oI->Path).

PHP:
<? 
    /** 
     *  ZIP file unpack class. 
     */ 

    include_once('../unzip.lib.php'); 

    /** 
     *  Sample 2 
     * 
     *  @author     Holger Boskugel <vbwebprofi@gmx.de> 
     *  @version    1.0.1 
     */ 

    //$oU = new SimpleUnzip('stored.example.zip'); 
    $oU = new SimpleUnzip('test.zip'); 

    $bF = FALSE; 

    print("<H3>Sample 2</H3>\n"); 

// 2003-12-02 - HB > 
    print("<B>Comment :</B>\n"); 
    print("{$oU->Comment}\n"); 
// 2003-12-02 - HB < 

//    for($nI = 0; $nI < $oU->Count(); $nI++) { 
//        $oI = $oU->GetEntry($nI); 
//        $oI = $oU->Entries[$nI]; 
    foreach($oU->Entries as $oI) { 
      printf("%sFile :\n" . 
             " * Error = %d\n" . 
             " * Errormessage = %s\n" . 
             " * Filename = %s\n" . 
             " * Path = %s\n" . 
             " * Filetime = %s\n" . 
             " * Data = #not displayed#\n", 
             $nI ? "\n" : '', 
             $oI->Error, 
             $oI->ErrorMsg, 
             $oI->Name, 
             $oI->Path, 
             date('Y-m-d H:i:s', $oI->Time)); 

      $bF = TRUE; 

      $oF = fopen("./MyDirectory/" . $oI->Name, "w"); 

      fwrite($oF, $oI->Data); 

      fclose($oF); 
    } 
?>
Viel Spaß bei der weiteren Nutzung !

Ein Hinweis für die Anwendung bei großen Daten. Dieser hier aufgezeigte "Scratch" ist speicherintensiv. Mit etwas Verständnis vom ZIP-Format ist es möglich auch eine "gestreamte" Klassenvariante zu bauen, welche mit entsprechenden Pointern im File arbeitet und wesentlich speicherschonender ist.


Holger
 
Top