jpeg mit PHP auf den Server hochladen?
Helen
- php
0 Mulder0 Thomas Schmieder0 Harry0 Thomas Schmieder
0 lulu
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
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().
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
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
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
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:
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)
Ä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
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
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
Huhu Helen
hier findest Du u.a. ein Beispiel zum Datei-Upload
http://php-faq.de/ch-webvariablen.html
Viele Grüße
lulu