Reset eines File-Inputs

M

MF

Hallo,

folgendes versuche ich gerade zu erstellen:
Auf einer Seite die ich gerade entwickel soll der Nutzer die Möglichkeit haben seinem Profil ein Bild beizufügen. Hat er dies bereits getan soll er es auch wieder löschen oder gegen ein neues eintauschen können.

Da man eine Seite ja immer möglichst idiotensicher machen und dennoch schnellen Aufbau haben will stellt sich nun folgendes Problem dar:
Der user begint sein Profil zu erneuern und beabsichtigt sein bereits bestehendes Bild gegen ein anderes zu ersetzen, dann jedoch entscheidet er sich es ganz zu löschen. Der User hat allerdings im File-Input bereits eine datei ausgewählt, er drückt also auf löschen und schickt das Forumlar ab. Nun wird ein völlig überflüssiger Upload gestartet und zwar das Bild was eigendlich garnicht benötigt wird, wird trotzdem auf den server geladen.

Da man nun mit der aktuellen Browsergeneration das Value eines File-Inputs nicht mehr setzen sondern nur ausgeben lassen kann habe ich versucht eine andere Möglichkeit zu finden das File-Input zu leeren und habe folgende Funktion geschrieben:
Code:
function reset_fileinput()
{		
	//löschen des Fileinputs
	var Knoten = document.getElementById('npic_td').firstChild;
	document.getElementById('npic_td').removeChild(Knoten);
			
	//erstellen eines neuen Fileinputs
	var newFileInput = document.createElement('input');
	var newFileType = document.createAttribute('type');
	newFileType.nodeValue = 'file';
	newFileInput.setAttributeNode(newFileType);

	//Einfügen des neuen Fileinputs
	var Ziel = document.getElementById('npic_td');
	Ziel.appendChild(newFileInput);
			
	//zuweisen der Attribute
	Knoten.setAttribute("id","npic_file");
	Knoten.setAttribute("name","npic");
}
Das funktioniert soweit so gut.
Wenn der User sich dann aber doch wieder umentschließt und doch ein neues Bild haben will und wieder ein Bild aussucht und dann das Formular abschickt so wird das Bild einfach nicht übertragen. Das PHP-Script auf der nächsten Seite kennt dann diese Variable "npic" überhaupt nicht, als würde sie nicht übergeben werden.

Weis hier einer die Lösung des Problems?
Mit dem Reset des ganzen form wäre theoretisch und praktisch das fileinput leer aber auch alle anderen Anderungen die der User vorgenommen hat wären somit hinfällig.

Grüsse
Marcus
 
Ich weiss ja nicht, was sonst noch alles in "npic_td" steht, aber vielleicht liegts daran, dass
du das erste Element löschst...das File-Input.
Dann hängst du das neue Element mit appendChild hinten ran, die Attribute setzt du aber für das erste Element....welches nur
das File-input ist, wenn sich in "npic_td" sonst nix befindet.

Es wär vielleicht das Sinnvollste, da mit replaceChild() zu arbeiten, das ersetzt einen vorhandenen Knoten durch einen neuen.

Bliebe anzumerken, dass deine Methode nur sehr beschränkt wirksam ist, IE<6,Opera<7 und Netscape<6 machen das nicht mit.
Ich find die hier im Forum praktizierte Methode gut.... das sollte ein Server schon mal verkraften können, wenn ein paar Microsekunden lang
eine unnütze Datei vorhanden ist.
 
nun ja es geht nicht darum ob mein server die datei verkraftet sondern um die wartezeit die der user hat wenn dieser unnütze dateiupload stattfindet. Zumal der user vieleicht ein bild aussucht was er mit einer digicam gemacht hat und dieses nicht komprimiert ist, dieser bilder können schonmal gut und gerne 1mb überschreiten.

Die Seite ist auch auf eine Zielgruppe ausgelegt die die neusten browserversionen verwendet.

zurück zum problem ... du hattest gewissermaßen recht ... ich hatte vergessen den knoten neu zu spezifizieren. gedacht getan ... nun gehts :)
 

Neue Beiträge

Zurück