Maximilian Vollendorf: iis und file upload

Liebe Forumler,

Im September gabs zwar zu diesem Thema schon regen Austausch, aber eine passende Antwort hab ich nicht gefunden, deshalb hier die Frage:
Wir haben ein Formular mit einem input type=file und einen enctype=multipart/form-data, soweit klar. Dat janze soll vom iis eigentlich nur an die Servlet-engine (jrun) weitergereicht werden. Beim iis kommt das file aber nicht an. Der iis3 antwortet mit einem 501, dass er das nicht unterstuetzt. Beim iis4 ist das alles kein Problem, da aber auf dem Server auch noch eine Oracle-Datenbank liegt, muessen wir den iis3 verwenden, da Oracle den 4er nicht unterstuetzt. Hat inzwischen jemand eine Loesung gefunden, wie man den iis3 zum file upload ueberreden kann?

Vielen Dank im vorraus und
viel Gruesse,

Maximilian

  1. Hallo Max !

    Wenn ihr Perl verwendet, gibt‚s hier ein paar Tips:
    http://webreview.com/wr/pub/98/08/14/perl/index.html

    CIAO
    H-Man

    1. Hallo Max !

      Wenn ihr Perl verwendet, gibt‚s hier ein paar Tips:

      Danke fuer die schnelle Antwort, aber erstens muessen wir aus verschiedenen Gruenden Java verwenden und zweitens liegt das Problem vermutlich  am Microsoft IIs3 WebServer, der laesst den upload gar nicht zu (501), d.h. man kann das Ganze gar nicht weiterverarbeiten.

      Gruss,
      Maximilian

    2. Wenn ihr Perl verwendet, gibt‚s hier ein paar Tips:
      http://webreview.com/wr/pub/98/08/14/perl/index.html

      Dort wird allerdings auch von dem Problem geredet, dass
      keine Dateien ueber 25K (warum eigentlich, die Begrenzung
      liegt bei 64K) so upgeloaded werden koennen.

      File sizes are limited to 25K,
         larger files will return an 'Internal Server Error'

      Grund, die
      Daten kommen alle im multipart-format ins <STDIN>, dass
      aber nur 64 K  insegsammt zu greifen vermag. Das einzige
      sinnige Verfahren, was ich bisher gefunden habe, ist ueber
      die CGI.pm, hat natuerlich dann den Nachteil, dass man
      im Tempverzeichnis lauter uploadfilen hat, die man waehrend
      der Scriptlaufzeit erst mal nicht los wird. Aber das funktioniert
      auch problemlos fuer den IIS 4.0 und hat mit dem Webserver
      erst ein mal so nichts zu tun. Fuer die CGI.pm benoetigt man
      allerdings Perl 5.004 or better. Leider bin ich auch noch nicht
      so ganz schlau draus geworden, das ohne Fremd-Module
      hinzuzaubern, ich komme auch nicht ohne CGI.pm  ueber
      64 KB rueber.

      gruesse

      Stefan R. Mueller

      CIAO
      H-Man

  2. Hallo!

    werden. Beim iis kommt das file aber nicht an. Der iis3 antwortet mit einem 501,
    dass er das nicht unterstuetzt. Beim iis4 ist das alles kein Problem, da aber
    auf dem Server auch ....

    also nach meiner Erfahrung funktioniert das auch mit IIS-Versionen < 4 - in meinem Fall sogar noch mit einer 2'er-Version, allerdings hatte ich damit auch zu kämpfen. Das Problem war, daß bei 'multipart/form-data' ja mehrzeilige Daten herübergereicht werden. Und Zeilenumbrüche in ASCII-Dateien gehören zu den Dingen, für die es wohl nie einen einheitlichen Standard geben wird *g*.
    Beispiel zur Anschauung: In CONTENT_LENGTH steht "500" und die upgeloadete Datei hat 20 Zeilen. Unter Windows besteht ein Zeilenumbruch aus 2 ASCII-Zeichen, is ja auch logisch, da man ja auch bei einer Schreibmaschine einen (1) Wagenrücklauf und (2) einen Zeilenvorschub erwirken muß (*§$@$!...).  In vielen Fällen (z.B. bei Verwendung der Sprache C/C++) wird aber von der Einleseroutine nur ein Zeichen für einen Zeilenumbruch übermittelt. Das führt dazu, daß die Datei aus dem Beispiel schon nach 480 Bytes (wegen der 20 Zeilen) komplett an das CGI-Skript übermittelt wurde. Verlangt waren aber 500 Bytes! Ergebnis - das Skript wartet und wartet und ......

    Vielleicht habt ihr bei euch ja ein ähnliches Problem?! Das ganze habe ich ansonsten schon mal etwas auführlicher unter <../../sfarchiv/1998_4/t01482.htm#a6277> gepostet.

    Viele Grüße

    Andreas

    P.S.: Noch mal was anderes - Die Ausführung von CGI-Skripten läuft bei IIS-Versionen kleiner als 4 anders, man muß einen Registry-Eintrag unter HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters\Script_Map (oder so ähnlich) machen (für Perl z.B. : ".pl    c:\bin\perl.exe %s %s"), aber das weißt Du wahrscheinlich bereits...