Helen: jpeg mit PHP auf den Server hochladen?

Hi,
kann ich elegant ein jpeg in ein Verzeichnis auf den Webserver laden nur mit Hilfe von PHP? Ich kenne nur eine recht unpraktische Möglichkeit.
Vielen Dank

Gruß

Helen

  1. kann ich elegant ein jpeg in ein Verzeichnis auf den Webserver laden nur mit Hilfe von PHP? Ich kenne nur eine recht unpraktische Möglichkeit.

    Was wäre denn für Dich "elegant"?
    Ich kenne eh nur eine Methode, nämlich copy().

    1. Hi,

      mit PHP alleine funktioniert das "Hochladen" leider nicht. Auf dem Client braucht man noch einen "HTML-Browser"

      Und der reagiert dann mit Vorliebe auf

      <form name="upload" action="uploadscript.php">
        <input type ="file" name="datei[]">
        <input type ="file" name="datei[]">
        <input type ="file" name="datei[]">
        <input type="submit" value="abdafür" name="BTN_upload">

      </form>

      So ungefähr müsste der Client-Teil aussehen.

      Auf dem Server passiert folgendes:

      Die hochgeladene Datei wird in ein Temp-Verzeichnis des Servers geladen (als temporäre Datei). Im Script wird eine Variable mit dem Handle aud die temporärdatei und eine mit dem Originalnamen bereitgehalten. Man muss nun die Temporärdatei mit der copy()-Funktion NACH DER SICHERHEITSPRÜFUNG in das gewünschte Verzeichnis kopieren. Dafür muss der PHP-Deamon schreibrechte im Zielverzeichnis haben. Es empfiehlt sich, die Funktion umask() vorher zu nutzen, um die Rechtre für die zu kopierende Datei gleich auf das gewünschte Maß einzuschränken.

      Die Temporärdatei verschwindet automatisch, wenn das Handle auf sie freigegeben wird, also wenn das Script endet.

      Soviel zum Dateiupload.

      Viele Grüße aus http://www.braunschweig.de

      Tom

      1. Moinsen

        <form name="upload" action="uploadscript.php">

        Da fehlt noch ein enctype="multipart/form-data".

        Und dann darf er sich noch mit dem PHP-Bug rumschlagen, der ab PHP 4.2.0 Dateiuploads etwas unangenehm macht:
        http://bugs.php.net/bug.php?id=17958

        Ciao,

        Harry

        1. Moin moin,

          <form name="upload" action="uploadscript.php" method="post" enctype="multipart/form-data">

          So besser? Hast ja Recht, auch wenn es Default ist, sollte man es angeben.

          Und dann darf er sich noch mit dem PHP-Bug rumschlagen, der ab PHP 4.2.0 Dateiuploads etwas unangenehm macht:
          http://bugs.php.net/bug.php?id=17958

          Durch den Bug report steig ich nicht durch. Was passiert da?
          War wohl gestern etwas spät bei mir...

          Grüße aus http://www.braunschweig.de

          Tom

          1. Tag

            Und dann darf er sich noch mit dem PHP-Bug rumschlagen, der ab PHP 4.2.0 Dateiuploads etwas unangenehm macht:
            http://bugs.php.net/bug.php?id=17958

            Durch den Bug report steig ich nicht durch. Was passiert da?
            War wohl gestern etwas spät bei mir...

            Och, eigentlich ganz einfach:

            Sobald enctype="multipart/form-data" im Formular steht und man eine PHP-Version >= 4.2.0 verwendet gibt's eine Fülle von Möglichkeiten an Sachen, die passieren können aber eigentlich nicht sollten:

            • PHP vergisst, das letzte Formular-Element in $_POST in $HTTP_POST_VARS einzutragen.
            • Manchmal wird nur der letzte Buchstabe vom letzten Feld vergessen
            • Manchmal wird auch einfach das erst Feld vergessen
            • Meistens bleiben aber $_POST und $HTTP_POST_VARS leer. So als wäre überhaupt nichts passiert. Und das ist dann ärgerlich. Ziemlich ärgerlich sogar. Noch ärgerlicher finde ich,d aß der Bug nun schon über zwei Monate auf'm Buckel hat und immer noch nix dagegen getan wurde.

            Grrrr.

            Ciao,

            Harry
             (Hat immerhin nur knapp 2 Stunden gebraucht um rauszubekommen, daß dieser Bug in seinen Skripten auftaucht und nicht er zu blöd war, eine simple IF-Anweisung richtig zu formulieren)

            1. Äh ...

              Sobald enctype="multipart/form-data" im Formular steht und man eine PHP-Version >= 4.2.0 verwendet gibt's eine Fülle von Möglichkeiten an Sachen, die passieren können aber eigentlich nicht sollten:

              • [...]

              Ich habe glatt die fünfte (und neuste) Möglichkeit vergessen:
              Dateien im Binär-Format gehen kaputt (die ersten zwei Zeilen der Datei werden irgendwie ... hm ... "verschwachsinnigt")

              Ciao,

              Harry

              1. Hi Harry,

                ich habe gleich einen Bärenschreck bekommen. Allerdings habe ich noch die Version 4.0.4 laufen. Sollte bzw. kann ich die unbesorgt weiterbenutzen, bis die sich bei php was ausgedacht haben gegen die Bugs? Da habe ich das Problem nämlich noch nicht festgestellt.

                Gruß aus http://www.braunschweig.de

                Tom

                1. Tag

                  ich habe gleich einen Bärenschreck bekommen. Allerdings habe ich noch die Version 4.0.4 laufen. Sollte bzw. kann ich die unbesorgt weiterbenutzen, bis die sich bei php was ausgedacht haben gegen die Bugs? Da habe ich das Problem nämlich noch nicht festgestellt.

                  Ne, da brauchst Du Dir keine Sorgen machen.
                  Das Problem tritt erst ab Version 4.2.0 auf, da in dieser Version die Behandlung für POST-Requests komplett neu geschrieben wurde (ach, was waren die PHP-Fritzen da stolz drauf). Und seit 4.2.0 schleppen Sie jetzt auch schon den Bug mit. Bis jetzt hat sich das auch in 4.3.0-dev nicht geändert.

                  Das interessante ist, daß das Problem nur sporadisch auftritt. Hier in der Arbeit, unter Win98 tritt es praktisch nicht auf, daheim unter FreeBSD (4.4 und 4.6) auch nur gaaaanz selten, unter XP aber praktisch in zwei von drei Fällen. Als Server ist bei mir immer der Apache im Einsatz, aber der Fehler scheint durch die Bank bei allen Betriebssystemen, Servern und PHP-Versionen ab 4.2.0 aufzutreten (Reproduced: 30 of 30 ... irgendwie finde ich das beängstigend).

                  Ciao,

                  Harry

  2. Huhu Helen

    hier findest Du u.a. ein Beispiel zum Datei-Upload

    http://php-faq.de/ch-webvariablen.html

    Viele Grüße

    lulu