Hi,
kannst du mir erklären für was du sowas brauchst?
Mir fällt nichts ein.~dave
Nagut da ihr jetzt ALLE gefragt habt erklär ich es dann doch mal.
Da gibt es ein spezielles input Feld -> type='file'. Damit kann man Dateien an den Webserver senden. Sehr unschön ist, dass man eine Datei (falls es ein Bild ist) erst sieht, wenn man das komplette Formular (welches noch andere Textfelder oder ähnliches enthalten kann) abgeschickt hat. Da habe ich letztens einen netten Artikel gelesen wie man dieses komplette Abschicken (und somit "unsichtbare" hochladen eines Bildes) des Formulares mit Hilfe eines Iframes umgehen kann.
Und zwar benötigt man dafür ein Formular, welches nur das type='file' in sich trägt und ein Iframe. Das Iframe hat z.B. den Namen "sklave". Das Formular bekommt ein target='sklave' und schickt somit die Daten an den Sklaven. Die Action des Formulares beinhaltet das Script welches die Daten, die es empfängt, verarbeiten kann. In diesem Fall wird also das Bild empfangen und auf dem Webserver gespeichert. In dem Iframe gibt es dann auch eine Ausgabe.
<script>
parent.objInstance.createImage("src");
</script>
Man ruft ein Javascript auf, welches sich generell um den Dateiupload kümmert (zumindest das Layout) und übergibt ihm die Source des Bildes. Das Javascript erzeugt ein new Image() und setzt das eben hochgeladene Bild ins HTML. Somit sieht man das Bild bevor man das komplette Formular absendet.
Und hier kommt meine Idee. Damit dieses Script das richtige Objekt im Javascript ansprechen kann gebe ich ihm den Namen in einem hidden Feld mit. Wäre es php könnte man so auf den Namen des Javascript Objektes zugreifen:
$_POST['js_objekt'] = "objInstance" ($_FILE['upload'] wäre das Bild).
Ergo stünde da
echo "<script>
parent.".$_POST['js_objekt'].".createImage(".$strBildname.");
</script>";
~~~ (Der Code beinhaltet nur die Rudimentären Stücke)
Somit trenne ich Verarbeitung (php) und Layout (js) und ermögliche es, dass mehrere Objekte vom Typ "FileUpload" im JS existieren können.
Achja mir ist bekannt dass es auch ein Fileupload möglichkeit mittels Ajax gibt. Diese ist jedoch noch nicht für alle Browser zu nutzen :(, oder doch?
Hoffe ich konnte helfen :D.
Gruß
sich erklärender
T-Rex