Wenn man eine Datei hochläd, wird sie auf dem server wohl
immer irgendwo auf der Festplatte landen.
Wenn man ein Bild oder sonst ein anderes Format direkt in
(X)HTML einbetten will, so kann man dafür das Pseudoformat
’data:’ verwenden, bei img innerhalb des Attributes src,
funktioniert nicht bei antiken browsern.
Zuvor wendet man auf das Bild dann per PHP base64 an und
setzt dann natürlich noch vor die Bilddaten den Medientyp
(ehemals MIME-Typ).
Sie “liegt” nach dem Upload bereits da - im Upload-Temp-Verzeichnis, wie ja bereits festgestellt.
Also hole sie dort heraus, verschiebe sie woanders hin, wo sie ueber HTTP erreichbar ist - dann kannst du sie auch im Browser anzeigen lassen.
Sie nicht aus dem Temp-Verzeichnis herauszuholen, waere bloed - denn dann ist sie nach Ablauf der Scriptinstanz futsch, und der Nutzer muesste sie erneut hochladen. Das kann ja eigentlich nicht der Sinn einer Vorschau sein.
Du kannst das Bild sonst nicht direkt aus dem /tmp/
referenzieren, weil das nur ein lokales Verzeichnis ist, aber keine
URI. Direkt referenzieren kann man das Bild nur, wenn es in
einem Verzeichnis steht, welches dem Apachen auch zugänglich
ist, also letztlich eine URI repräsentiert.
Direkt einbetten mit PHP kannst du hingegen prinzipiell alles,
was man mit PHP irgendwie erreichen kann, was an den
Zugriffsrechten liegt, aber wo ein Skript von dir was hinspeichern
kann, sollte ein Skript auch wieder was auslesen können.
Zwischen dem Speichern und dem Auslesen können kann
allerdings etwas Zeit vergehen, was die Angelegenheit
verkomplizieren könnte, wenn das Abspeichern und Auslesen
schnell hintereinander in einem Skript erfolgen soll, da braucht
es gegebenenfalls eine Pause dazwischen, muß man vielleicht
etwas herumprobieren…
Achso - zu obigem Skriptbeispiel - es ist technisch und inhaltlich
unsinnig, GET und POST in einem Formular zu mischen, auch
wenn einige browser oder der Apache das so hinnehmen mögen,
prinzipiell geht da nur entweder oder…