Frank Berbuir: Download aus CGI

Hallo!

Ich möchte folgendes Problem lösen:

Die Eingaben in einer HTML-Form werden von einem CGI ausgewertet. Das CGI generiert daraus eine binäre Datei, die der User herunterladen soll.

Um nun nicht den Web-Server vollzumüllem, möchte ich diese binäre Datei so als Antwort von CGI ausgeben, daß der IExplorer und der Netscape Browser den 'Save as' Dialog ausgeben und die Datei speichern. Dadurch kann das CGI die Datei nach der Ausgabe sofort löschen.

Mit der folgenden CGI-Ausgabe gelingt mir das auch.

Content-type: application/x-ooo; name="DATEI.BIN"
  Content-disposition: inline; filename="DATEI.BIN"

.. daten in binärer form ....

Der Netscape Navigator mach alles richtig (bietet 'save as' und setzt beim 'Speicher unter' den richtigen Namen 'DATEI.BIN').

Der MS Internet Explorer setzt beim Speichern unter aber immer den Namen des CGI's ein. Das CGI ist ein Executable in C++, sodaß der IExplorer immer CGI.EXE als Dateinamen vorschlägt.

Laut meinen MIME Unterlagen sollte das, was ich da mache, richtig sein.

Weiß einer, wie man den IExplorer dazu bewegt, die Ausgabe des CGI's unter einem anderen Namen zu speichern?

PS: Das scheint auch noch WebServer abhängig zu sein. In einem internen Netz mit OmniHttpd als WebServer, zeigt der IExplorer die binären Daten an (also Blubber im Fenster) und der Netscape kann plötzlich auch nicht mehr den Dateinamen richtig setzen. Ich weiß leider nicht, welche Software mein Provider gerade benutzt.

Vielen Dank im Voraus
Frank

  1. Hallo Frank!

    Ein Trick, der haeufig funktioniert, besteht darin, den
    gewuenschten Namen der Download-Datei mit in die URL
    zu schreiben.

    D.h. statt

    <form method="post" action="cgi-bin/asciiDump.cgi">

    kann man auch

    <form method="post" action="cgi-bin/asciiDump.cgi/datei.bin">

    schreiben. Das Skript asciiDump.cgi wird dann ausgefuehrt und
    der Name "datei.bin" in der CGI-Umgebungsvariablen PATH_INFO
    gespeichert. Dies fuehrt in den meisten Faellen dazu, dass dieser
    Name dann als Default fuer Downloads genommen wird.

    Viele Gruesse!

    Andreas

    BTW,; Fuer File-UPloads funktioniert diese Methode NICHT, wie ich
               hier schon mehrfach erwaehnte. Ich warte immer noch auf
               Gegenargumente zu diesem Thema...

    1. Hallo Andreas,

      das hat funktioniert, vielen Dank.

      Frank