Bildupload mit Formular, Hilfe!

Sascha Preisegger

Aktives Mitglied
Hallo!

In einem Formular haben unsere Besucher u.A. die Möglichkeit ein Bild hochzuladen. Nach dem Absenden des Formulars werden die Felder auf Vollständigkeit und Plausibilität kontrolliert.

Sind Felder fehlerhaft wird das Formular nochmals ausgegeben und die Felder entsprechend markiert, wobei dann jeweils in den value-Wert des Inputs die eingegebenen Daten eingefügt werden, damit der Besucher diese anpassen kann.

Wie mache ich das aber bei dem <input type="file" name="kbild"> hier funktioniert das leider nicht so. Wenn ich das Formular erneut ausgebe:

CODE
<?php
.
.
echo ("<input type='file" name='kbild' value ='$kbild'>");
.
.
?>



Dann erscheint dort nichts.

Wo liegt mein Denkfehler?

Danke & Grüße

Sascha

 
Hallo Manuel!

Dankeschön, das habe ich auch schon probiert.

Allerdings habe ich gerade festgestellt, dass ein <INPUT TYPE="FILE"> offensichtlich nicht mit einen VALUE vordefinert werden kann.

<INPUT TYPE="FILE" NAME="kbild" VALUE="dasBILD">

geht nicht. Ist offensichtlich nicht in HTML vorgesehen.

Auch der Umweg über Javascript (document.formular.kbild.value = "das Bild") fuktioniert nicht.

Was nun??

Greetz

Sascha
 
Ich hab mal gerade bissel gelesen und es ist wohl schon so das einige Browser das value Attribut bei typ="file" einfach ignorieren.

Ich könnte mir vorstellen das es den Browser-Herstellern einfach zu kompliziert ist weil: Wenn man dieses Attribut sinvoll behanden soll müsste es ja möglich sein ein Startverzeichnis anzugeben, nicht nur wie du jetzt den kompletten Pfad.
 
Hi Sascha,

Ich hatte vor kurzem genau das gleiche Problem wie du, aber leider dafür keine optimale Lösung gefunden, was natürlich nicht heisst, dass es keine gibt.

Ich habe dann (zuerst schweren Herzens) auf der Page angegeben, dass bei fehlerhaften Eingaben die Bildauswahl nochmal gemacht werden muss, d.h. der User muss also nochmal auf "Durchsuchen" klicken und ein Bild auswählen.

Wäre das denn so schlimm, wenn das deine User auch machen müssten? Natürlich ist es nicht gerade userfreundlich, aber ich bin zu dem Schluss gekommen, dass es vertretbar ist (zumindest für mich als User wäre es das), da das ganze Problem ja nur bei fehlerhaften Eingaben auftritt und nicht bei jedem einzelnen Upload ...

Greats,

S.B.
 
QUOTE (Stefan Bötschi @ So 21.8.2005, 14:40)Ich habe dann (zuerst schweren Herzens) auf der Page angegeben, dass bei fehlerhaften Eingaben die Bildauswahl nochmal gemacht werden muss, d.h. der User muss also nochmal auf "Durchsuchen" klicken und ein Bild auswählen.

Hallo!

Ja so habe ich das jetzt auch gelöst. Ganz zufrieden bin ich damit aber nicht.

Anyway - many thanx - jetzt ist mir zumindestens klar, dass es nicht an meiner Blödheit liegt - sondern an den Browser-Hersteller.
biggrin.gif


TAFN & CU

Sascha
 
wenn deine User alle JavaScript aktiv haben kannst du die Felder auch ohne eine Submit mit JavaScript checken. Dann müssen Angaben nicht nochmals gemacht werden. Die Felder sollten natürlich trotzdem später noch PHP etc. geprüft werden, weil auf JavaScript kann man sich nicht so gut verlassen.
 
Hallo Manuel!

JS-Prüfung habe ich mir aus dem Grund geschenkt.

Ist aber natürlich eine Möglichkeit - Ich denke mal drüber nach.

Cu

Sascha
 
QUOTE (manuel @ So 21.8.2005, 14:21)Ich könnte mir vorstellen das es den Browser-Herstellern einfach zu kompliziert ist weil: Wenn man dieses Attribut sinvoll behanden soll müsste es ja möglich sein ein Startverzeichnis anzugeben, nicht nur wie du jetzt den kompletten Pfad.

Ich glaube eher, dass ist ein Sicherheitsproblem: wenn man einen Filepfad vorgeben könnte, könnte man das ja auch benutzen, um irgendein File von der Festplatte des Benutzers zu holen, ohne dass der es überhaupt merkt. Wird das File-Feld auf unsichtbar gesetzt (oder in einen versteckten DIV oder so) und der Pfad z.B. auf c:\windows\irgendein_file_mit_passwörtern gesetzt, dann wäre das die einfachste Möglichkeit in einen fremden PC "einzubrechen". Damit das nicht passiert, kann eben das File-Feld nicht vom Server her vorbelegt werden. Ich bin jedenfalls froh, dass es nicht geht.

Wenn ich einen Fileupload implementiere, mach ich diesen jeweils als separates Form. Je nachdem in einem bestimmen Ablauf (der User muss zuerst die Eingaben machen und erst wenn diese Ok sind, kann er noch das File auswählen und uploaden) oder ich speichere das File auf dem Server zwischen, und zeige dann den Filenamen im Form einfach an, damit der User sieht, dass das File schon auf dem Server ist.

Griessli
Irene
 
Ich sehe dies genau so wie Irene.

Gute Möglichkeit, die auch benutzerfreundlich ist:
Das Bild wird sowieso hochgeladen, auch wenn einige Felder invalid sind; die Datei kannst du dann in ein temporäres Verzeichnis stellen. Dann einfach nicht mehr das Hochladefeld anzeigen sondern den Namen der hochgeladenen Datei (oder Link zu ihr etc.). Sobald alle Benutzereingaben valid sind, kannst du die Datei aus dem temp Verzeichnis in das Zielverzeichnis verschieben.
Von Zeit zu Zeit den temp Ordner leeren und damit hat sich's auch schon.
smile.gif
 
Hallo Irena & Josh!

Die von Euch beschriebene Variante ist absolut die cleverste - es war also doch meine Dummheit
dry.gif


Nun da es sich in meinem Fall sowieso "nur" um eine zeitlich begrenzte, interne Kundenumfrage handelt werde ich es wohl bei dem Hinweis "Bitte Bild erneut hochladen" lassen.

Danke & Grüße

Sascha
 
Faustregel:

Wenn man mit etwas noch nicht wirklich zufrieden ist, dann besser nochmal darüber nachdenken - bisher hab ich noch jedes Mal einen "AHA" Effekt gehabt!
smile.gif
 
Zurück
Oben