Datei hochladen und speichern
Tim
- php
Hallo Jungs und Mädels,
Bei folgender Herausforderung könnte ich mal Eure Hilfe gebrauchen.
und zwar möchte ich gerne, dass der User auf meiner Seite ein Bild von sich hochladen kann, was dann halt auf dem Server gespeichert wird.
Bisher kann ich es leider nur so realisieren, dass ich mir das Bild per Mail zukommen lasse und dann halt manuel auf den Server ziehe. Das ganze sieht dann so aus:
$grenze="grenzlinie";
$name_des_bildes=$HTTP_POST_FILES['datei']['name'];
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: $autor\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=$grenze\n";
$botschaft="\n--$grenze\n";
$botschaft.="Content-transfer-encoding: 7BIT\r\n";
$botschaft.="Content-type: text/plain\n\n";
$botschaft.="\n\n";
$botschaft.="\n--$grenze\n";
$botschaft.="Content-Type: application/octetstream;\n\tname=$name_des_bildes\n";
$botschaft.="Content-Transfer-Encoding: base64\n";
$botschaft.="Content-Disposition: attachment;\n\tfilename=$name_des_bildes\n\n";
$zeiger_auf_datei=fopen("$datei","rb");
$inhalt_der_datei=fread($zeiger_auf_datei,filesize("$datei"));
fclose($zeiger_auf_datei);
$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
$botschaft.=$inhalt_der_datei;
$botschaft.="\n\n";
$botschaft.="--$grenze";
mail("meine_em@il.de","Betreff",$botschaft,$headers);
Das ganze scheint mir zwar sehr kompliziert, habe ich ehrlich gesagt auch nicht verstanden, aber es funzt und das wr ersteinmal das wichtigste.
Aber nun wieder zur Frage, wie kann ich das Bild direkt auf dem Server speichern?
Freu mich auf ne Menge Antworten
Gruß
Aber nun wieder zur Frage, wie kann ich das Bild direkt auf dem Server speichern?
Indem Du Dich mit der PHP-Doku und den Dateifunktionen anfreundest und ein Verzeichnis anlegst bzw. identifizierst in dem das PHP Rechte zum Speichern hat.
Aber nun wieder zur Frage, wie kann ich das Bild direkt auf dem Server speichern?
Indem Du Dich mit der PHP-Doku und den Dateifunktionen anfreundest und ein Verzeichnis anlegst bzw. identifizierst in dem das PHP Rechte zum Speichern hat.
Du hast ja die Daten in einer Variable, speichern wie folgt:
http://de3.php.net/manual/de/ref.filesystem.php
http://de3.php.net/manual/de/function.fwrite.php
Hi,
na da hast du mal was improvisiert.
Aber so gehts richtig:
http://de.php.net/manual/de/features.file-upload.php
Das ist natürlich für files allgemein. Anschauen solltest du Dir auch
die Funktion: getimagesize()
Prinzip:
Forumular
=> File temporär speichern
=> prüfen/editieren => verschieben
carpe diem
Pia
Hallo Pia,
ich habe mich da mal reingelesen und jetzt folgenden Quellcode:
<?
//Der ursprüngliche Dateiname
$_FILES['userfile']['name']
//Type der Datei
$_FILES['userfile']['type']
//Größe der hochgeladenen Datei in Bytes
$_FILES['userfile']['size']
//Der temporäre Dateiname
$_FILES['userfile']['tmp_name']
?>
Da kommt jetzt allerdings die Fehlermeldung:
Parse error: parse error, unexpected T_VARIABLE in test.php on line 9
Zeile 9 wäre hier jetzt beim Type der Datei.
Wenn ich die Zeile Lösche kommt die gleiche Meldung bei Größe
hast da noch ne Idee?
Danke und Gruß
Hallo Tim
ich habe mich da mal reingelesen und jetzt folgenden Quellcode:
//Type der Datei
$_FILES['userfile']['type']
Welchen Quellcode?
Variabeln hast du hier, mehr nicht.
Zeig mal den ganzen Code.
Pia
Nunja:
<html><head>
<title></title>
<link rel="stylesheet" type="text/css" href="../../scripts/include/style.css">
</head>
<body background="../../../gfx/wrinkl.jpg">
<font color="green" face="Monotype Corsiva" size="5"><b><center>
<?
//Der ursprüngliche Dateiname
$_FILES['userfile']['name']
//Type der Datei
$_FILES['userfile']['type']
//Größe der hochgeladenen Datei in Bytes
$_FILES['userfile']['size']
//Der temporäre Dateiname
$_FILES['userfile']['tmp_name']
?>
</body>
</html>
... :0)
Hoppala,
da föllt mir gerade auf, ich habe mal wieder die ; am Ende jeder Zeile vergessen 80) - - - jetzt funzt es auch...
aber das Bild ist ja jetzt net da...
.. das ist doch jetzt im Temp-Verzeichnis wenn ich das richtig verstanden habe...
hi,
und zwar möchte ich gerne, dass der User auf meiner Seite ein Bild von sich hochladen kann, was dann halt auf dem Server gespeichert wird.
http://www.php.net/manual/de/features.file-upload.php
gruß,
wahsaga
Hallo wahsaga, Hallo Pia
da muss ich nochmal nachhaken.
Soweit habe ich den Link, den Ihr mir gegeben habt ein wenig studiert und auch verstanden. es wird also die Datei in einem tmp-Verzeichnis gespeichert.
Jetzt mal ne ganz doofe Frage:
Wo ist mein tmp-Verzeichnis auf dem Server bzw. wie kann ich dieses Festlegen?
Gruß
Hi Tim,
Jetzt mal ne ganz doofe Frage:
Wo ist mein tmp-Verzeichnis auf dem Server bzw. wie kann ich dieses Festlegen?
Das brauchst du eigentlich gar nicht wissen.
Aber du kennst phpinfo()?
Vielleicht ist diese Anleitung einfacher für dich:
http://www.php-faq.de/q/q-formular-upload-php4.html
carpe diem
Pia
Wo ist mein tmp-Verzeichnis auf dem Server...
Das brauchst du eigentlich gar nicht wissen.
...mhh aber auf dem Link, den Du mir gerade noch gegeben Hast steht:
"Der Pfad zu upload_tmp_dir muss absolut angegeben werden."
wäre es denn nicht doch Sinnvoll, wenn ich den kennen würde bzw. angebe?
Aber du kennst phpinfo()?
Ich habe so das Gefühl, dass ich mich schämen müsste, wenn ich diese Frage mit nein beantworten würde...
PS: ich weiß, ich bin manchmal ein Chaot
Ha !!!
Du wirst es nicht glauben, aber ich habs geschafft.
Dank Deiner lieben Hilfe!
mit dieser letzten Zeile geht es:
move_uploaded_file ($userfile, "test.jpg")
Super vielen lieben Dank Pia
Küssi und bis bald vielleicht
Da bin ich auch schon wieder,
noch ist mein Kapitel mit dem Bild doch nicht ganz abgeschlossen.
Ich kann also nun ein Bild hochladen und sogar auf dem Server speichern.
Das Problemchen ist jetzt aber, dass das Bild nicht dargestellt werden kann, weil keine entsprechenden Rechte vergeben worden sind, dass es auch von jedem User es sehen darf.
mit folgendem Befehl speichere ich das Bild:
move_uploaded_file ($userfile, "image.jpg");
Frage: Wie kann ich dem Bild folgende Rechte mitgeben (666)
Hi Tim,
Frage: Wie kann ich dem Bild folgende Rechte mitgeben (666)
du solltest schon ab und zumal suchen.
beispiel:
http://forum.de.selfhtml.org/archiv/2004/5/t80795/
Pia
Du hast ja recht & auch schon wieder mal das Ergebnis herbeigezaubert.
Bist wirklich ein Schatz - Alles funktioniert
Danke
Hi!
Da dein Thread mit dem Doppelposting jetzt gesperrt wurde, antworte ich mal hier.
Das Problemchen ist jetzt aber, dass das Bild nicht dargestellt werden kann, weil keine entsprechenden Rechte vergeben worden sind, dass es auch von jedem User es sehen darf.
Sicher, daß es an den Rechten liegt?
Wie lautet die Fehlermeldung?
mit folgendem Befehl speichere ich das Bild:
move_uploaded_file ($userfile, "image.jpg");
Das ist OK.
Frage: Wie kann ich dem Bild folgende Rechte mitgeben (666)
Nachdem du dein Bild verschoben hast, kannst du die Rechte mit dem Kommando chmod ändern.
(Siehe auch: http://de.wikipedia.org/wiki/Chmod und http://eva-marbach.net/handbuch/u-chmod.htm.)
Um das Kommando abzusetzen, kannst du beispielsweise die PHP-Funktion exec() nutzen.
Schöner Gruß,
rob
Und dann fällt mir noch was in deinem Code auf:
$name_des_bildes=$HTTP_POST_FILES['datei']['name'];
Arbeite mit $_FILES und in keinem Fall mit $HTTP_POST_FILES.
Das ist veraltet und funktioniert (wenn es denn funktioniert) nur durch eine php.ini-Einstellung, um Rückwärtskompatibilität zu gewährleisten.