steffen: Dateien auswählen

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

  1. Grüße,

    Kann ich es irgendwie machen, dass die ausgewählten Dateien gespeichert werden?

    ja, aber nicht in der küche!

    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    http://www.sexgott-or-not.com/?test=428054
    1. 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

      1. 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

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. 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

          1. 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

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. 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

  2. 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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de