Sven Rautenberg: Problem mit Bild-Upload

Beitrag lesen

Moin!

array(1) { ["userfile"]=> array(5) { ["name"]=> string(8) "test.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpIPfKVo" ["error"]=> int(0) ["size"]=> int(9535) } } /tmp/phpIPfKVo

[Symbol für nicht gefundene Grafik]

9535
2
width="400" height="210"

Der Fehler ist, dass kein Bild angezeigt wird, sondern nur ein Platzhalter für einen img-Tag, der auf eine nicht vorhandene Datei verweist.

Logisch. Die hochgeladene Grafik wird in der Regel in einem temporären Verzeichnis abgelegt, welches vom Web aus nicht zugänglich ist - siehe "tmp_name", und außerdem wird diese temporäre Datei nach Ende des Skriptes gelöscht - sie existiert also dann schon nicht mehr, wenn der Browser die komplette HTML-Seite kennt und dann die Grafik nachladen will.

Füge ich ein

rename($temp_name,"userfiles/test.jpg");

ein, so erhalte ich folgende Fehlermeldung:

Warning: rename() failed (Invalid cross-device link) in [...] on line [...]

Du kannst die Datei nicht einfach umbenennen, weil ein Umbenennen im Prinzip ein Verschieben ist - und das geht offenbar nicht so einfach.

Benutze die Funktion move_uploaded_file() und guck dir bei http://www.php.net mal die Beispiele und Userbeiträge an - da ist eigentlich ausreichend demonstriert, wie es geht.

- Sven Rautenberg

--
Signatur oder nicht Signatur - das ist hier die Frage!