no.kate: type=file value?

Folgendes Problem:
ich kann das value eines inputs mit type=file mit js zwar auslesen aber nicht ändern. Ist das irgendwie möglich??

hier mein script:

//geht
onchange="javascript:if(!this.value.match('.jpg')){javascript:alert('kein jpg');}"

//geht nicht
onchange="javascript:if(!this.value.match('.jpg')){this.value='';}"

Kann mir jemand helfen?
Mir würde auch schon reichen wenn mir jemand sagt wie ich in einem "file" nur bestimmte Dateiendungen zulasse.
mfg kate

  1. Hallo kate,

    ich kann das value eines inputs mit type=file mit js zwar auslesen aber nicht ändern. Ist das irgendwie möglich??

    Nein, sicherheitstechnisch nicht. Stelle Dir mal vor, jemand würde folgendes Script verwenden:

    document.forms['meinformular'].elements['dateieingabe'].value = 'C:\autoexec.bat';
    // oder eine andere Datei, die viel wichtigere Infos enthält
    document.forms['meinformular'].submit();

    Klar, _Du_ willst das nicht machen, aber wie kann ein Browser zwischen einer »guten« und einer »bösen« Seite unterscheiden?

    Mir würde auch schon reichen wenn mir jemand sagt wie ich in einem "file" nur bestimmte Dateiendungen zulasse.

    Die Dateiendung sagt rein gar nichts über den tatsächlichen Inhalt der Datei aus - Du musst serverseitig prüfen, ob die Datei vom gewünschten Typ ist. (und zwar _nicht_ anhand der Endung, sondern anhand des Inhaltes!) Bei PHP gibt es z.B. http://de3.php.net/de/getimagesize (das liefert auch den Dateityp) - bei anderen Sprachen gibt es andere Methoden.

    Clientseitig hast Du vermutlich keine Chance, etwas in der Richtung anzustellen, die Endung zu überprüfen ist m.E. nach Quatsch, da ich ja wunderbar eine JPEG-Datei als meinbild.meineeigeneendung abspeichern kann.

    Christian

    --
    Hast Du einen Beitrag? Nur her damit!
    http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
    SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
    sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[
    1. Nicht umbedingt quatsch, wenn ich verhindern will das der User ausversehen eine nicht-jpg Datei hochladen will.
      Naja aber schon thx erstmal so weit ;)
      mfg kate

      1. Hi,

        Nicht umbedingt quatsch, wenn ich verhindern will das der User ausversehen eine nicht-jpg Datei hochladen will.

        und wie willst Du das tun, wenn er seine Virus-Executable "picture.jpg" nennt?

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Och, wenn die site nicht public ist geht das schon... ^^
          mfg kate

          1. Hi,

            Och, wenn die site nicht public ist geht das schon... ^^

            Du gehst in erster Linie nicht von einem bestimmten Benutzerverhalten aus, sondern von technischen Umgebungen. Die richtige und für Dich einzig relevante Frage lautet: Existiert ein Weg, eine Virus-Executable als "picture.jpg" zu benamsen?

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
          2. Hallo kate,

            Och, wenn die site nicht public ist geht das schon... ^^

            1. Dir sollte klar sein, dass »Angriffe« oft von innen kommen.

            2. Wenn Du so viel Vertrauen in Deine Benutzer setzt, warum willst Du dann überhaupt noch überprüfen?

            3. Was spricht denn nun gegen eine serverseitige Prüfung des Dateiinhalts? Die Datei kommt nämlich sowieso beim Server an und Du musst sie sowieso irgendwie verarbeiten. Ich habe genau diese Prüfung, die ich vorgeschlagen habe, (getimagesize) bei einem meiner PHP-Scripte verwendet - es sind genau 4 Zeilen, die *sehr* einfach aufgebaut sind. (ich nehme an, dass es in anderen Sprachen genauso einfach geht) Das ist sicher und einfach - ich verstehe das Problem dabei nicht.

            Christian

            --
            Hast Du einen Beitrag? Nur her damit!
            http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
            SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
            sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[
            1. Nein, ein Problem habe ich wirklich nicht.
              Warum ich die überprüfung Clientseitig haben wollte?
              Ganz einfach. Der User nimmt ein Bild setzt es rein schickt es ab...
              warten...
              warten...
              Rückmeldung: Fehler, das Bild ist keine jpg Datei...
              User ist natuerlich genervt.
              Darum.

              Wobei es hier keine Rolle spielt was hinter der Endung jpg versteckt sein könnte, weil ich in diesem, diesem einen Fall wirklich vertrauen habe ;)

              mfg kate

              1. Hi!

                Nein, ein Problem habe ich wirklich nicht.
                Warum ich die überprüfung Clientseitig haben wollte?
                Ganz einfach. Der User nimmt ein Bild setzt es rein schickt es ab...
                warten...
                warten...
                Rückmeldung: Fehler, das Bild ist keine jpg Datei...
                User ist natuerlich genervt.
                Darum.

                Ich weiss ja nicht, was fuer ne Art von Leute Deine Zielgruppe da ist, aber mich nervt das immer tierisch, wenn sich irgendein Programm fuer so unglaublich schlau haelt und eine Datei zurueckweist, weil der Dateiname nicht irgendwelchen stupiden Regeln entspricht. Z.B. kann ich keine MPEG-2 Dateien an einen gewissen kommerziellen MPEG&DVD-Player verfuettern, wenn ich die auch so genannt habe, also mit Endung .mpeg-2, nein, da muss es eben unbedingt .mpg sein. :-( JPEGs nenn' ich uebrigens immer .jpeg, wie es sich gehoert, und nicht .jpg, was ja nur ein Workaround fuer die abgefuckten Dateisysteme voellig veralteter Betriebssyteme eines Redmonder Herstellers ist.

                So long

                --
                Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords.
                    -- http://support.microsoft.com/default.aspx?scid=kb;en-us;Q276304
      2. Hallo kate,

        Nicht umbedingt quatsch, wenn ich verhindern will das der User ausversehen eine nicht-jpg Datei hochladen will.

        Nur weil eine Dateiname auf ».jpg« endet, lässt dies noch lange_nicht auf den Inhalt Rückschlüsse ziehen. Es _kann_ eine JPEG-Datei sein, es _muss_ aber nicht. Die einzige _zuverlässige_ Möglichkeit, festzustellen, ob es sich um eine JPEG-Datei handelt, ist den Inhalt zu prüfen - und das geht _nur_ serverseitig.

        Christian

        --
        Hast Du einen Beitrag? Nur her damit!
        http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
        SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
        sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[