Christian: OPERA überträgt type="file" Felder obwohl sie leer sind.

Hallo,

wenn ich ein Formular mit mehreren File-Upload-Feldern abschicke, bei dem aber nicht alle Felder ausgefüllt sind, erkennt das ASP Script, daß ich zum Auswerten benutze, daß alle Felder einen Inhalt haben, egal ob eine Datei ausgewählt wurde oder nicht. Die Dateien sind dann ca. 60 Bytes groß und haben keinen Namen (woher auch). Das Problem gibts aber nur beim OPERA 6 oder 7. IE und Mozilla machen keine Probleme.

Ist das sicher ein Opera Problem oder liegt es vielleicht am Script?

CIAO & Danke

  1. Hallo,

    wenn ich ein Formular mit mehreren File-Upload-Feldern abschicke, bei dem aber nicht alle Felder ausgefüllt sind, erkennt das ASP Script, daß ich zum Auswerten benutze, daß alle Felder einen Inhalt haben, egal ob eine Datei ausgewählt wurde oder nicht. Die Dateien sind dann ca. 60 Bytes groß und haben keinen Namen (woher auch). Das Problem gibts aber nur beim OPERA 6 oder 7. IE und Mozilla machen keine Probleme.

    Ist das sicher ein Opera Problem oder liegt es vielleicht am Script?

    Teste mal das ASP Script indem du mit einem PERL Script auf deinem lokalen Rechner ein Upload machst. Hier eine kleine Anleitung:
    http://i-netlab.de/article/post.shtml

    Damit läßt sich der Fehler sicher eingrenzen.

    Rolf

    1. Hallo

      Teste mal das ASP Script indem du mit einem PERL Script auf deinem lokalen Rechner ein Upload machst. Hier eine kleine Anleitung:
      http://i-netlab.de/article/post.shtml

      leider test ich gerade auf einem Win2000 Server mit IIS5, da wars jetzt so auf die Schnelle nicht möglich ein Perl Script zum Laufen zu bringen.

      Ich habe das Ganze nochmal mit einem PHP Script versucht, daß bringt beim IE wie auch beim Opera keine Probleme.

      Bei weiteren Tests mit dem ASP Script habe ich jetzt festgestellt, daß als Content-Type: etwas wie "E3qX0loO8DmF/6B3huYWZ" angegeben wird.
      Vielleicht sendet der Opera also eine Art Checksumme mit, die das ASP Script nicht als solche erkennt und als Teil einer Datei interpretiert. Bei PHP stehen solche Werte übrigens nicht im Content-Type, wahrscheinlich, weil die Upload Funktion, die im Gegensatz zu ASP schon integriert ist, diese Checksumme ignoriert.

      Ich denke also, daß das Upload Script, das ich benutze in dieser Hinsicht unsauber programmiert wurde...

      1. Hallo

        Teste mal das ASP Script indem du mit einem PERL Script auf deinem lokalen Rechner ein Upload machst. Hier eine kleine Anleitung:
        http://i-netlab.de/article/post.shtml

        leider test ich gerade auf einem Win2000 Server mit IIS5, da wars jetzt so auf die Schnelle nicht möglich ein Perl Script zum Laufen zu bringen.

        Das PERL Script was ich meine hat mit dem Server überhaupt nichts zu tun. Es emuliert lediglich einen UserAgent und macht einen Upload.

        Du hast mich leider nicht verstanden. Schade.

        Rolf

        Ich habe das Ganze nochmal mit einem PHP Script versucht, daß bringt beim IE wie auch beim Opera keine Probleme.

        Bei weiteren Tests mit dem ASP Script habe ich jetzt festgestellt, daß als Content-Type: etwas wie "E3qX0loO8DmF/6B3huYWZ" angegeben wird.
        Vielleicht sendet der Opera also eine Art Checksumme mit, die das ASP Script nicht als solche erkennt und als Teil einer Datei interpretiert. Bei PHP stehen solche Werte übrigens nicht im Content-Type, wahrscheinlich, weil die Upload Funktion, die im Gegensatz zu ASP schon integriert ist, diese Checksumme ignoriert.

        Ich denke also, daß das Upload Script, das ich benutze in dieser Hinsicht unsauber programmiert wurde...

  2. Hallo,

    Tag!

    Ist das sicher ein Opera Problem

    Vermutlich...

    oder liegt es vielleicht am Script?

    Da Du Opera wohl nicht ändern kannst, solltest Du Dein Script anpassen.
    Also: Wenn "Feld" nicht leer > Prüfe ob in "Feld" außer:
    " " (ASCII 32)
    "\t" (ASCII 9)
    "\n" (ASCII 10)
    "\r" (ASCII 13)
    "\0" (ASCII 0)
    "\x0B" (ASCII 11) (Quelle:http://www.php.net/manual/en/function.trim.php ACHTUNG: Diese Funktion sollte nur als Referenz für die Zeichen dienen, da das stumpfe wegschneiden der Zeichen an Anfang und Ende bei einer Datei zu unerwünschten Datenfehlern führen kann.)
    sonst noch was drinn steht. Falls da nur diese Zeichen drinn stehen und sonst nichts, kann man "Feld" als leer ansehen, da Dateien die einzig und alleine nur aus diesen Zeichen bestehen wohl kaum vorkommen werden.

    bye
    ich

  3. Hallo,

    haben, egal ob eine Datei ausgewählt wurde oder nicht. Die Dateien sind dann ca. 60 Bytes groß und haben keinen Namen (woher auch). Das Problem gibts aber nur beim OPERA 6 oder 7. IE und Mozilla machen keine Probleme.

    lenk deinen Upload mal auf folgendes Skript um:

    <%
    Dim varRawData
        varRawData = Request.BinaryRead( Request.TotalBytes )

    Response.BinaryWrite varRawData
    %>

    Dann siehst du genau, was gesendet wird und was nicht. Das hilft
    dir evtl. bei der Anpassung deiner Skripte. Welches Uploadskript
    verwendest du eigentlich?

    Tschau, Stefan