lina-: onchange bei fileupload springt nicht an

moin alle :)

Ich glaub ich hab ein Brett vorm Kopf... vielleicht kann mal jemand mit nem Zaunpfahl winken?

Mein Problem:

  
<script type="text/javascript">  
  function doSomething(){  
    alert("doing something");  
  }  
</script>  
  
<form enctype="multipart/form-data">  
<input type="file" size="30" maxlength="100000" accept="text/xml" onchange="doSomething()"/>  
</form>  

Ich bin davon ausgegangen, dass das Event "onchange" ausgelöst wird, wenn der User eine Datei auswählt... aber irgendwie kommt die Methode nicht zum tragen.
Was hab ich übersehen/falsch gemacht?

liebe Grüße aus Berlin und vielen Dank schonmal
lina-

--
Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
  1. hi,

    Ich bin davon ausgegangen, dass das Event "onchange" ausgelöst wird, wenn der User eine Datei auswählt... aber irgendwie kommt die Methode nicht zum tragen.
    Was hab ich übersehen/falsch gemacht?

    Der Zugriff auf File-Inputfelder ist aus Sicherheitsgründen stark begrenzt; gut möglich, dass dies auch für das Reagieren auf Ereignisse wie die Änderung des Feldinhaltes per JS zutrifft.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. moin wahsaga :)

      Der Zugriff auf File-Inputfelder ist aus Sicherheitsgründen stark begrenzt; gut möglich, dass dies auch für das Reagieren auf Ereignisse wie die Änderung des Feldinhaltes per JS zutrifft.

      Das habe ich auch schon gelesen - hielt es aber für absurd, dass das auch für Events gelten soll :(
      hmm.. dann muss ich mir wohl was anderes ausdenken ...
      <bernd>Mist</bernd>
      liebe Grüße aus Berlin
      lina-

      --
      Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
      1. moin lina- :)

        hmm.. dann muss ich mir wohl was anderes ausdenken ...

        und das habe ich auch getan ;)

        Nun muesste ich nur noch wissen, wie ich den fileupload dazu überrede auch Pfade zu akzeptieren. (in der Hoffnung, dass das geht)

        Sinn und Zweck der Aktion ist es, dass ich eigentlich nur einen Dateipfad von User wissen mochte, wo die Configurationsdatei hingespeichert werden soll (das geschieht alles über struts, java - alles kein Thema).
        Ergo ist der Dateiupload eigentlich nicht richtig - ich weiss - aber es ist eine so nette Möglichkeit den User in seinem eigenen Dateisystem navigieren zu lassen.
        Solange die Datei bereits vorhanden ist, gibt es auch keine Probleme. (dann wird die Configurationsdatei einfach überschrieben) - aber der Erstanwender (oder diejenigen, die ihre Dateien alle paar Wochen woanders haben wollen) machen mir Sorgen. Wenn ich im Fileupload einen ungültigen Dateinamen angebe, wird das natürlich direkt mit einer Fehlermeldung quittiert.
        Darum möchte ich jetzt gerne, dass auch Pfade akzeptiert werden und wenn dann die Form submited wird, prüfe ich ob der Pfad vollständig ist. Wenn er das nicht ist (also ein Dateiname fehlt) lasse ich das submit mit dem return false beenden und schicke eine prompt() hinterher ;)

        Wenn jemand andere Ideen zu meinem Problem hat - immer her damit!

        liebe Grüße aus Berlin
        lina-

        --
        Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
        1. Hallo,

          Nun muesste ich nur noch wissen, wie ich den fileupload dazu überrede auch Pfade zu akzeptieren. (in der Hoffnung, dass das geht)

          Sinn und Zweck der Aktion ist es, dass ich eigentlich nur einen Dateipfad von User wissen mochte, wo die Configurationsdatei hingespeichert werden soll (das geschieht alles über struts, java - alles kein Thema).

          Hm. Wenn Du mit diesen Techniken die Möglichkeit hast, eine Datei im lokalen Dateisystem des Nutzers zu speichern, dann kannst Du doch dann, beim Speichern also, den Nutzer nach dem Speicherort fragen.

          und wenn dann die Form submited wird, prüfe ich ob der Pfad vollständig ist.

          Das Schlimme ist, dass Du via HTTP den Pfad zur hochzuladenden Datei gar nicht bekommen musst: http://www.faqs.org/rfcs/rfc1867.html
          ...
          6. Examples
          content-disposition: form-data; name="pics"; filename="file1.txt"
          ...
          Du bekommst eigentlich nur den Datei_namen_ und den Dateiinhalt. Dass einige Browser das "filename" mit dem kompletten Pfad füllen ist nicht Standard. Opera bspw. macht's nicht.

          Wenn jemand andere Ideen zu meinem Problem hat - immer her damit!

          Wie gesagt, beim Speichern fragst Du den Nutzer nach dem Pfad, ähnlich, wie es Setup-Routinen normalerweise tun.

          viele Grüße

          Axel

          1. moin Axel :)

            Sinn und Zweck der Aktion ist es, dass ich eigentlich nur einen Dateipfad von User wissen mochte, wo die Configurationsdatei hingespeichert werden soll (das geschieht alles über struts, java - alles kein Thema).
            Hm. Wenn Du mit diesen Techniken die Möglichkeit hast, eine Datei im lokalen Dateisystem des Nutzers zu speichern, dann kannst Du doch dann, beim Speichern also, den Nutzer nach dem Speicherort fragen.

            Das geht leider am MVC-Ansatz vorbei, weshalb ich diese Möglichkeit ausschliessen möchte. :(

            Aber ich habe mittlerweile eine andere Möglichkeit gefunden, die der deinen sehr nahe kommt ;)
            Und zwar stehen mir ja in der Struts-Action die HTTP-Daten zur Verfügung - und damit auch das response ;) Dort kann ich natürlich wieder eine Ausgabe an den Browser geben. Der Outputstream bekommt nun einen fake-conten-type und somit fragt der Browser, ob und wohin die Datei gespeichert werden soll.

            Ich danke dir trotzdem :)
            liebe Grüße aus Berlin
            lina-

            --
            Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)