ProfiSchnell hat geschrieben:Upload: AcroRdIF.dll
Type: application/octet-stream
Size: 105.609375 Kb
Stored in: /tmp/phpvxKmaa
Das kann insofern nicht angehen, als dass du nicht den Text „Stored in:“ ausgibst, sondern „Stored in: upload/“:
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
n.b.: Der „upload/“-Teil ist ein normaler, fest einprogrammierter Text, der
muss in der Ausgabe erscheinen, egal, was in $_FILES passiert oder auch nicht.
Weiterhin dürfte (fast) überhaupt keine Ausgabe stattfinden, denn weder steht in $_FILES["file"]["type"] der richtige Typ, noch ist $_FILES["file"]["size"] kleiner als 20.000. Solange das nicht passt, macht das Skript, das du hier zitiert hast, nichts bis auf „Invalid File“ auszuspucken.
Du solltest erstmal den richtigen Ablauf klären.
„/tmp/phpvxKmaa“ dürfte weiter vorne herstammen, dort wo du „Temp file:“ ausgibst. Dass du diese temporäre Datei in /tmp nicht findest, ist kein Wunder, denn erstens verschiebst du sie vor der „Stored in upload/“-Ausgabe mit move_uploaded_file(), und zweitens werden temporäre Dateien am Ende des Skriptes von PHP gelöscht. Kurz: Aus /tmp verschwunden ist sie in jedem Fall.
Hast dir in diesen beiden Punkten Klarheit verschafft, solltest du daran gehen, den Rückgabewert von move_uploaded_file() nicht einfach zu ignorieren, sondern auszuwerten. Die Funktion gibt im Fehlerfall false zurück.
Dann hast du IMHO ein Problem mit $_FILES[]["name"], ich kann in der PHP-Anleitung gerade keine Aussage darüber finden, was da
genau drinsteht. Falls du nicht schlauer bist, solltest du tunlichst verhindern, dass jemand als Dateiname einen kompletten Pfad übermittelt und du unwissentlich die Datei statt in upload/bla in ein beliebiges anderes Verzeichnis schiebst.
Benutze $_FILES[]["name"] nur mit der Funktion
basename()!
Und last but not least ist die Angabe in $_FILES[]["type"] definitiv mit Vorsicht zu genießen; sie stammt direkt vom Browser und auch dort kann dir von pösen Puben™ alles mögliche zugeschickt werden bzw. genauer: es kann jede beliebige Datei mit dem Aufkleber image/jpeg übermittelt und dir untergejubelt werden. Dass image/jpeg draufsteht, ist keine Sicherheit, dass auch JPEG drin ist.
Prüfe den Inhalt der Datei selbst mittels
mime_content_type() oder, so vorhanden,
finfo_file().
Eigentlich wollte ich, dass der Server die Datei mit der Mail weiterleitet...kann mir da jemand helfen?
Dann solltest du dich allerdings nicht mit move_uploaded_file() aufhalten (mit dem Rest schon). Wie man Dateien per mail() verschickt, wurde hier schon ein paar Mal genannt.