Zip Dateien entpacken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zip Dateien entpacken

    Servus zusammen,
    also nachdem ich mir heuteden ganzen Sonntag um die Ohren gehauen habe, ohne zu einem verwertbaren Ergebnis zu kommen, habe ich jetzt beschlossen doch mal nachzufragen.
    Was ich machen will ist eigentlich ganz einfach dachte ich, ich programmiere gerade an einer Homepage für eine Freundin herum, und sie will eben auch eine Bildergalerie, wie Frauen nun mal sind, hat sie natürlich auch ganz spezielle Vorstellungen zum Aussehen, und so etwas gibt es eben noch nicht, wie sie es haben will
    Ich hab vorher easypig probiert, also schon eine fertige Bildergalerie, hat auch echt gut funktioniert, nur eben das Aussehen war nicht ganz so einfach anzupassen, war auch alles sehr kryptisch geschrieben. Aber in dem Script gab es auf jeden Fall schon die Möglichkeit zip Dateien hochzuladen und dann wurden sie automatisch entpackt, Thumbnails erstellt, und alles ganz toll! So wollte ich das auch machen, aber ich bin leider schon am entzippen gescheitert
    Ich suche schon den ganzen Tag eine Klasse oder ein Script, dass mir Dateien entpacken kann, die im zip Format vorliegen (Also Dateien die ich hier auf Windows mit Winzip packe). Da es ja bei easypig funktioniert, sollte es doch auch bei mir gehen dachte ich mir so...
    Also bin ich auch gleich zu http://php3.de/manual/de/ref.zip.php da alle Codeschnipsel probiert, aber nix tat.
    PHP-Code:
    function unzip($file$path) {
      
    $zip zip_open($file);
      if (
    $zip) {
       while (
    $zip_entry zip_read($zip)) {
         if (
    zip_entry_filesize($zip_entry) > 0) {
           
    // str_replace must be used under windows to convert "/" into "\"
           
    $complete_path $path.str_replace('/','\\',dirname(zip_entry_name($zip_entry)));
           
    $complete_name $path.str_replace ('/','\\',zip_entry_name($zip_entry));
           if(!
    file_exists($complete_path)) { 
             
    $tmp '';
             foreach(
    explode('\\',$complete_path) AS $k) {
               
    $tmp .= $k.'\\';
               if(!
    file_exists($tmp)) {
                 
    mkdir($tmp0777); 
               }
             } 
           }
           if (
    zip_entry_open($zip$zip_entry"r")) {
             
    $fd fopen($complete_name'w');
             
    fwrite($fdzip_entry_read($zip_entryzip_entry_filesize($zip_entry)));
             
    fclose($fd);
             
    zip_entry_close($zip_entry);
           }
         }
       }
       
    zip_close($zip);
      }

    Bei dem Code hier kommt nur die Fehlermeldung "Fatal error: Call to undefined function: zip_open() in /www/htdocs/v122778/galerie/upload.php on line 11".
    Also scheint das bei meinem Provider (all-inkl.com) nicht zu gehen, oder wie? Aber bei dem dummen Script geht das doch auch!!!
    Braucht ihr noch infos aus der phpinfo.php, also sieht man da, ob das unterstützt wird oder nicht?
    Und ja die Suche habe ich schon benützt und auch sämtliche Links da angesehen, aber die kannte ich auch schon vorher, ich hab heut glaube ich echt schon alles angeschaut, was es dazu schon mal gab ;(
    Also falls ihr was habt für mich, nur her damit, aber wenn es geht nicht nur Links zu irgendwelchen Klassen, weil die kenne ich bestimmt schon
    Danke schon mal!

  • #2
    Re: Zip Dateien entpacken

    Original geschrieben von Jimmelreiter
    Aber bei dem dummen Script geht das doch auch!!!
    Dann schau dir das "dumme" Skript, das anscheinend mehr kann als du, doch einfach mal an!!!
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      ruf mal phpinfo() auf. wenn dort kein zip drin ist, hast du ein problem.

      aber es gibt sicherlich auch weitere classen, welche zip unterstützen. hier bei den code-schnipseln ist auch was zu finden, wenn ich nicht irre.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        http://pecl.php.net/zip
        mit dl() einbinden und dein schnippsel oben sollte funktionieren - bleibt die frage ob du beim provider dl() verwenden darfst ..
        mfg,
        [color=#0080c0]Coragon[/color]

        Kommentar


        • #5
          Okay, danke der letzte Link sieht auch sehr vielversprechend aus, das werd ich gleich mal noch aus Neugierde probieren, aber ich habe jetzt auch schon eine Lösung gefunden die funktioniert.
          Habe eine Weile tief in dem Script herumgegraben und da die Library gefunden die benutzt wird. Für alle die auch Probleme mit zip haben:
          http://www.phpconcept.net/pclzip/
          Ist echt einfach zu verstehen und funktioniert noch dazu

          Kommentar


          • #6
            Hallo, ich habe das selbe Problem. Ich bastel auch grade nen zip-Uploader für Galleries!

            Wie benutze ich den das pclzip?
            Kan mit den Dateien so garnichts anfangen! :-(
            www.sebastian-engel.de

            Kommentar


            • #7
              Hi!
              @script von Jimmelreiter:
              Der Funktionsaufruf zip_open($file);

              erfordert bei mir unter windows'schen IIS6 Bedingungen
              eine relative Pfadangabe zum web root Verzeichnis.
              zum Beispiel muss ich folgendes verwenden:
              PHP-Code:
              // relativer Pfad
              $zip_server_root'c:\\inetpub\\wwwroot\\your_path\\path_to_zipfile\\';

              // zip Datei
              $file 'beispiel.zip';

              // zip open
              zip_open($zip_server_root.$file);
              /* 
              ... Funktion die dann das Archiv entpackt
              */ 
              Durch Formatierung verloren gegangen:

              $zip_server_root= 'c:\\inetpub\\wwwroot\\your_path\\path_to_zipfile\\\';


              ...und siehe da, das Script funktioniert einwandfrei.
              Beim Apache müsste dann der Pfad zum Ordner "htdocs"
              entsprechend eingetragen werden.
              (zip Erweiterung in php.ini aktivieren)

              Gruß Martin
              Es geht doch alles...

              Kommentar


              • #8
                Poste doch mal bitte den gsammten PHP code

                ich weiß das der thread alt is aber würde mich intressieren!

                Kommentar


                • #9
                  Hi!
                  Ja, die letzte Meldung liegt etwas länger zurück. Hier nun mein Code zum entpacken von zip-Dateien:
                  Das ist ein Auszug aus einem Script, das ein hochgeladenes ZIP-Archiv entpackt hat. Mit dem IIS musste die Variable
                  $zip_server_root= 'c:\\inetpub\\wwwroot\\your_path\\path_to_zipfile\\';
                  lauten, damit alles klappt
                  PHP-Code:
                  Class cmsDBImage_serie{
                      function 
                  cmsDBImage_zip_serie($img_upload,$input,$output,$size,$intranet,$public,$private){
                          
                                  
                      
                  // Temporärer Ordner für gif -> png Konvertierung und Bildgrößenbestimmung
                      
                  $img_tmp_ordner "img_tmp/"
                      
                      
                          
                  $zip_archiv_name $_FILES["img_upload"]["name"];
                          
                  $zip_temp_name $_FILES["img_upload"]["tmp_name"];
                          
                  $zip_file_type $_FILES["img_upload"]["type"];
                          
                          echo 
                  "Dateityp: " .$zip_file_type."<br>";
                      
                          
                  $webroot "c:\\\inetpub\\\wwwroot\\\cms2\\\intranet\\\cms_img\\\zipfiles\\\";
                          
                  $zip_dir = "zipfiles/";
                          
                  $unzipped_dir = "unzipped/";
                          
                  $accepted_file_type = "application/x-zip-compressed";
                      
                      

                  // --------------- Zip Archiv von temp Ordner in den Ordner zipfiles kopieren-----------------------
                  //                        (original Dateiname wird verwendet)                                         
                      
                          if (!copy(
                  $zip_temp_name$zip_dir.$zip_archiv_name)) {
                                  echo "
                  Fehler beim Upload";
                          } 


                  // --------------- gesichertes zip Archiv nun entpacken---------------------------------------------
                  //                        (in den Ordner unzipped)                            

                  // Zip öffnen (zip_open)    
                          if(
                  $zip_file_type !== $accepted_file_type){
                              // Sicherungskopie aus Ordner zipfiles löschen
                              if(file_exists(
                  $webroot.$zip_archiv_name)){
                                  unlink(
                  $webroot.$zip_archiv_name);
                          }
                          
                  $message = "<b>Fehler:</bNicht unterstütztes Zip Archiv verwendet";
                          return;
                          } else 
                              
                  $zip = zip_open($webroot.$zip_archiv_name);
                                  if(
                  $zip) {
                                  // Zip File einlesen und ermitteln,ob ein Ordner mit 
                                  // gepackt wurde
                                      while (
                  $zip_entry = zip_read($zip)) {
                                          if (zip_entry_filesize(
                  $zip_entry) > 0) {
                                      
                                  // Dateiname ergibt sich aus <ordner_im_zip_archiv>_<Dateiname>
                                  // Pfad "
                  /" durch "_" ersetzen 
                                              
                  $complete_path = $unzipped_dir.str_replace ('/','_',zip_entry_name($zip_entry));
                                  // Dateiname Leerzeichen " " durch "
                  _" ersetzen
                                              
                  $complete_name = str_replace(' ','_',$complete_path);
                                              

                                              if (zip_entry_open(
                  $zip$zip_entry, "r")) {
                                                  
                  $fd = fopen($complete_name, 'w');
                                                  fwrite(
                  $fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
                                                  fclose(
                  $fd);
                                                  zip_entry_close(
                  $zip_entry);
                                              }
                                           }
                                       }
                                  zip_close(
                  $zip);
                                  }
                  // -------------------- Funktionsaufruf um entpackte Dateien in Ordner xxx/img_orig zu kopieren
                  zip_cmsDBImage_filehandle("
                  unzipped/","img_tmp/",75,$intranet);
                  // Fkt kopiert nun entpackte Dateien von unzipped in vorgegebenen Ordner
                              
                      }


                  Viel Spaß!

                  Kommentar

                  Lädt...
                  X