Automatisch enzippen lassen ...

Kufstein

B1G-Software-Kunde
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 ???
 
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:
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
 
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#
 
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
 
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:
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);
?>
 
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
 
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 ????
 
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:
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:

2165_06112006_072905_unzip.gif


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


Ansonsten: RTFM :D

Karsten ;)
 

Attachments

  • test.zip
    251 bytes · Views: 173
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 ;)
 
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
 
Back
Top