Dateien auswählen
steffen
- html
Hallo Nachteulen ;)
zuerst wollte ich es so machen, dass ich ein Ordner auswähle. Nach Recherchen fand ich heraus, dass das nicht geht, also hab ich ein Mehrfachupload gemacht. Das heisst ich geb anfangs die Anzahl der hochzuladenden Dateien aus und wähle sie einzeln aus.
Wenn ich aber nun merke, dass die Anzahl der Dateien nicht stimmt und möchte noch eins hinzufügen. Kann ich es irgendwie machen, dass die ausgewählten Dateien gespeichert werden?
Danke für die hinweise.
steffen
Grüße,
Kann ich es irgendwie machen, dass die ausgewählten Dateien gespeichert werden?
MFG
bleicher
Was auch immer du mir damit sagen willst ...
Beispiel:
-input-datei ausgewählt
-input-datei ausgewählt
-input-datei ausgewählt
-input-datei ausgewählt
-input hinzufügen
-absenden
Nun klicke ich auf input hinzufügen und möchte das die ausgewählten dateien ausgewählt bleiben und sie nicht mehr auswählen muss.
steffen
Mahlzeit,
-input-datei ausgewählt
-input-datei ausgewählt
-input-datei ausgewählt
-input-datei ausgewählt-input hinzufügen
-absenden
Nun klicke ich auf input hinzufügen und möchte das die ausgewählten dateien ausgewählt bleiben und sie nicht mehr auswählen muss.
Was mir da spontan einfallen würde: Javascript
<!-- ohne Anspruch auf Fehlerfreiheit! -->
[...]
<script type="text/javascript">
[code lang=javascript]
function noch_ne_datei(btn) {
var ul = btn.form.getElementsByTagName('UL')[0];
var nr = parseInt(ul.lastChild.name.substr(ul.lastChild.name.indexOf('_') + 1)) + 1;
if (!isNaN(nr)) {
var li = document.createElement('li');
li.type = 'file';
li.name = 'datei_' + nr;
ul.appendChild(li);
}
return false;
}
</script>
[...]
<form>
<ul>
<li><input type="file" name="datei_1"></li>
<li><input type="file" name="datei_2"></li>
<li><input type="file" name="datei_3"></li>
</ul>
<input type="button" value="Noch ne Datei" onclick="return noch_ne_datei(this);">
<input type="submit" value="Absenden">
</form>
[...][/code]
MfG,
EKKi
Hallo EKKi,
funktioniert leider nicht dein Script. Er sagt mir has no properties.
Bin grad schon am rumbasteln, aber wozu brauch ich denn dass this in der funktion? Klappt doch auch mit document. oder?
steffen
Mahlzeit,
funktioniert leider nicht dein Script. Er sagt mir has no properties.
"Er"? Wer? Und WAS hat "no properties"?
Außerdem weise ich auf Folgendes hin:
<!-- ohne Anspruch auf Fehlerfreiheit! -->
Das war eine mal eben grob zusammengeschusterte IDEE und wir sind hier bei "SELF"HTML - wenn Du getesteten und zuverlässigen Code von mir haben möchtest, kann ich Dir gern ein Vertragsangebot basierend auf üblichen Stundensätzen zukommen lassen.
Bin grad schon am rumbasteln, aber wozu brauch ich denn dass this in der funktion? Klappt doch auch mit document. oder?
Das this brauchst Du nicht, das stimmt. Du kannst auch direkt über document einfach ALLE <ul>s auszulesen - aber ob das dann immer die richtigen sind? Du kannst auch Code so verhunzen, dass Du bei jeder kleinen Änderung alles umschreiben musst. Ich versuche meinen Code immer gleich so zu gestalten, dass er wiederverwendbar ist. Und falls z.B. der Fall eintritt, dass Du mehrere unterschiedliche solcher Dateiuploadlistendinger auf Deiner Seite hättest, bekämst Du Probleme, wenn die Funktion nicht "weiß" (bzw. gesagt bekommt), um welche der Dateiuploadlistendinger es geht.
MfG,
EKKi
Hallo EKKi,
ist doch kein Problem, dass er nicht funktioniert. Hat mir schon ziemlich weitergeholfen Danke dir erstmal auch die info mit dem this, was ich natürlich dann auch nutzen werde, wenn es diese möglichkeit gibt :)
var ul = btn.form.getElementsByTagName("ul")[0].lastChild.previousSibling;
var nr = parseInt(ul.firstChild.getAttribute( 'name' ).substr(ul.firstChild.getAttribute( 'name' ).indexOf('_') + 1)) + 1;
So stimmt auf jedenfall mal der Code :)
Danke dir. Den Rest werd ich auch noch zum laufen bringen.
Steffen
Hello,
zuerst wollte ich es so machen, dass ich ein Ordner auswähle. Nach Recherchen fand ich heraus, dass das nicht geht, also hab ich ein Mehrfachupload gemacht. Das heisst ich geb anfangs die Anzahl der hochzuladenden Dateien aus und wähle sie einzeln aus.
Wenn ich aber nun merke, dass die Anzahl der Dateien nicht stimmt und möchte noch eins hinzufügen. Kann ich es irgendwie machen, dass die ausgewählten Dateien gespeichert werden?
Jein, Du kannst sie nicht ausgewählt lassen im <input>-Element vom Type File-Upload.
Das ist aus den Browsern schon seit IE > 3.0 (Bei den anderen weiß ich die Version nicht) herausoperiert worden, weil sonst jedes angeforderte Dokument in der Lage wäre, Deinen Rechner auszufragen. JavaScript könnte mit der submit-Methode dazu missbraucht werden.
Das File-Upload-Feld lässt sich also nur manuell füllen.
Du kannst aber auf dem Server eine Session anlegen, in der Du die hochgeladenen Dateien speicherst.
Solange sie nicht zu groß werden (Speicherlimit für das Script, da die Session ebenfalls ins Script-Memory _geladen_ wird), stehen sie dann also zur Verfügung.
Den Namen kannst Du im nächsten Form anzeigen mit einer Checkbox "April, April, doch nicht permanent speichern". Dann könntest Du jedes Mal eine Datei dazu hochladen.
Eigentlich wäre es besser, die Files außerhalb der Session abzulegen, damit das Script nicht damit belastet wird. Aber ich habe noch nicht ausprobiert, wie man diese dann automatisiert wieder entfernen kann, wenn man sie nicht mehr benötigt (der Client einfach nicht wiedergekommen ist), ohne einen zusätzlichen Aufräumdienst zu installieren.
So hat z.B. PHP bereits einen für die Session-Dateien, den "Garbage-Collector", der bei neueren Installationen (z.B. auf Debian) auch mit einem Cronjob läuft und daher recht zuverlässig aufräumt.
Ich habe aber schon eine Idee, mal sehen, wann ich Zeit finde, sie auszuprobieren :-)
Ein harzliches Glückauf
Tom vom Berg