Turtle: In zip-Datei enthaltene Bilder nach Upload verarbeiten

Hallo,

ich möchte eine zip-Datei hochladen, die jpg-Bilder enthält.
Auf dem Server soll die Datei entzippt werden.
Die enthaltenen Bilder möchte ich dann weiter verarbeiten (z.B. Thumbnail-Ersellung, Umbenennen etc.)

Datei hochladen und entzippen klappt.
Wie aber kann ich die entzippte Datei weiter verarbeiten,
d.h. wie erkenne ich die enthaltenen Bilder?

Danke für Eure Hilfe im voraus,
Turtle

  1. Hello,

    Datei hochladen und entzippen klappt.
    Wie aber kann ich die entzippte Datei weiter verarbeiten,
    d.h. wie erkenne ich die enthaltenen Bilder?

    Was willst Du denn erkennen an den Bildern?

    Den MIME-Type kannst Du seit PHÜ 4.3.0 mit mime_content_type() http://de2.php.net/manual/de/function.mime-content-type.php ermitteln.

    Und dann kommt es darauf an, was Du machen willst.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  2. Hi!

    ich möchte eine zip-Datei hochladen, die jpg-Bilder enthält.
    Auf dem Server soll die Datei entzippt werden.
    Die enthaltenen Bilder möchte ich dann weiter verarbeiten (z.B. Thumbnail-Ersellung, Umbenennen etc.)

    Datei hochladen und entzippen klappt.
    Wie aber kann ich die entzippte Datei weiter verarbeiten,
    d.h. wie erkenne ich die enthaltenen Bilder?

    Damit ist ja schon mal der Mega-Anteil weg!
    Hast du auch Fehlerkontrollen eingeführt?
    Beim Upload von ZIP-Dateien können nämlich eine Menge unerwünschte Ausnahmen auftreten:

    • Was, wenn der Benutzer die Bilder in der ZIP-Datei selbst nochmals in Ordner gepackt hat?
    • Was passiert wenn der Benutzer andere Dateien als JPG-Dateien in der ZIP-Datei hat?
    • Sind die enthaltenen JPG-Dateien fehlerfrei, oder hat sich da jemand einen Scherz erlaubt und irgendwelche Dateien in JPG-Dateienumbenannt?

    Es gibt noch viele weitere Ausnahmen, die du alle verarbeiten musst.
    Unter anderem könnte sonst jemand eine PHP-Datei hochladen, abrufen und somit beliebigen Code ausführen lassen - nicht so gut.

    Und wenn du das alles gemacht hast, ist das Verarbeiten der JPG-Dateien ein Kinderspiel, mit der Funktion getimagesize() schaust du z.B. nach, wie groß das einzelne Bild ist.
    Dann gibt es in PHP eine Menge Bildfunktionen (die nur funktionieren wenn die GD-Library installiert ist), mit denen du die Bilder weiter verarbeiten kannst.

    Hat das geholfen?

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    SELFCode: ss:| zu:) ls:< fo:# de:> va:} ch:? sh:) n4:( rl:? br:^ js:( ie:% fl:( mo:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hi,

      danke, aber Du hast mir nicht geholfen.
      Fehlerkontrollen etc. will ich erstmal ausser acht lassen.

      Das nur jpg-Dateien enthalten sind, davon kann ich getrost ausgehen.
      Es wird also eine zip-Datei hochgeladen, die nur JPGs enthält, nichts anderes.

      Die Funnktion getimagesize() kenne ich auch.

      Was ich nicht weiß ist folgendes: nach dem entzippen erhalte ich  einen string

      ($output = shell_exec("unzip -p ".$_FILES[$destination]['tmp_name']);),

      woraus ich die Bilder erkennen muss. Nur wie?

      Gruss,
      Turtle

      1. Hello,

        Was ich nicht weiß ist folgendes: nach dem entzippen erhalte ich  einen string

        ($output = shell_exec("unzip -p ".$_FILES[$destination]['tmp_name']);),

        woraus ich die Bilder erkennen muss. Nur wie?

        Vielleicht solltest Du mit unzip erstmal auf der Konsole Erfahrungen sammeln, bevor Du Dir schon das nächste Problem aufhalst. Außerdem muss sichergestellt sein, dass Dein Host ein Unix-Host ist und nicht einer von Blindoof.

        [root@cobra][~] # unzip --help
        UnZip 5.50 of 17 February 2002, by Info-ZIP.  Maintained by C. Spieler.  Send
        bug reports to the authors at Zip-Bugs@lists.wku.edu; see README for details.

        Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
          Default action is to extract files in list, except those in xlist, to exdir;
          file[.zip] may be a wildcard.  -Z => ZipInfo mode ("unzip -Z" for usage).

        -p  extract files to pipe, no messages     -l  list files (short format)
          -f  freshen existing files, create none    -t  test compressed archive data
          -u  update files, create if necessary      -z  display archive comment
          -x  exclude files that follow (in xlist)   -d  extract files into exdir

        modifiers:                                   -q  quiet mode (-qq => quieter)
          -n  never overwrite existing files         -a  auto-convert any text files
          -o  overwrite files WITHOUT prompting      -aa treat ALL files as text
          -j  junk paths (do not make directories)   -v  be verbose/print version info
          -C  match filenames case-insensitively     -L  make (some) names lowercase
          -X  restore UID/GID info                   -V  retain VMS version numbers
                                                     -M  pipe through "more" pager
        Examples (see unzip.txt for more info):
          unzip data1 -x joe   => extract all files except joe from zipfile data1.zip
          unzip -p foo | more  => send contents of foo.zip via pipe into program more
          unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer

        Aus dem Rückgabestring an die Standardausgabe (der ja von shell_exec aufgefangen wird) kannst Du nur die Fehlermeldung oder die erbetene Verbose(=redselig)-Meldung ablesen. Wo die Files landen, steuerst Du mit den anderen Schaltern.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau