CGI in C++ und Datenübertragung in Base64



  • Moin Moin,

    ich habe ein kleines Problem, welches mir schon graue Haare bereitet.

    In C++ habe ich ein CGI Programm geschrieben, welches unter dem Microsoft-IIS/6.0 auch hervorragend seine Dienste erweist. Nun möchte ich dieses CGI um eine Download-Funktion ergänzen.

    Die eigentliche Datei liegt mir bereits in BASE64 vor und ich suche einen Weg, diese Datei in dieser Kodierung zu übertragen und vom Browser entschlüsseln zu lassen. Ähnlich wie bei gzip-gepackten Webseiten.

    Wenn ich allerdings ein wenig mit den Headern und dem MIME-Typen spiele, dann bekomme ich diese Datei zwar, aber es befinden sich nur die Base64 Dateien darin.

    Wenn es geht, möchte ich diese Datei nicht auf dem Webserver dekodieren und temporär zwischenspeichern.

    Diese Alternative klappt leider nicht :

    cout << "Content-Type:application/x-zip-compressed\n"
    		 << "Content-Disposition:attachment;filename=file.pdf\n"
    		 << "Content-Transfer-Encoding: base64\n\n"
    		 << "Ab hier kommen die Base64 Daten ...";
    

    Für jeden Anstoss bin ich sehr dankbar.



  • Ich weiss nicht ob ein Browser solche Dekodierung unterstützt. Ich würde es auf dem Server in das ausgepackte Format dekodieren. Wieso kommst Du darauf, dass Du diese dekodierte Datei zwischenspeichern musst? Du kannst die Datei doch mit einem cgi-bin einlesen und beim Streamen zu Klient auspacken oder sehe ich da was komplett falsch?



  • Hallo,

    nein, Du siehst das nicht falsch. Ich wollte nur einen bequemen Weg gehen und dachte, dass es eine elegante Lösung gibt.

    Meine Base64 Dekodierung sieht vor, dass ich ein Input- und ein Outputfile angebe. Deswegen kam ich darauf.

    Ein anderer Versuch die Daten gleich im Buffer zu dekodieren scheiterte leider auch, weil die Binären Daten nicht vernünftig übertragen wurden.

    Ich arbeite mich erst in diese Materie ein und blicke manchmal nicht ganz durch 🙂

    Viele Grüße


Anmelden zum Antworten