Parameter aus HTTP-POST-Request holen [gelöst]

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Donnerstag 15. März 2007, 10:59

Einen wunderschönen guten Morgen!

Meine Frage ist eigentlich ganz einfach, aber ich finde anscheinend nicht die Richtigen Module. Also mein Problem ist folgendes:

Ich habe ein HTML-Formular, mit dem einige Daten, darunter auch Dateien, an einen Server übermittelt werden sollen. Sagen wir mal zwei Inputfelder "input1" und "input2" und eine Datei "file1".

Das Problem besteht nun aber auf der Seite des Servers, welchen ich als "HTTPServer" mit einem "BaseHTTPRequestHandler"-Handler aufgesetzt habe. Die daten per "get_POST" zu empfangen funktioniert wunderbar. Aus den empfangenen Daten würde ich nun gerne die Informationen über die übergebenen Daten herausholen: Namen und Inhalt. Im Prinzip also in etwa das, was "FieldStorage" auf CGI-Ebene erledigt. Den Spaß selber zu parsen ist ja an sich kein Problem, aber ich gehe doch davon aus, das es bereits etwas fertiges gibt.

Ein Umweg über CGI-Skripte ist nicht möglich, da der Server nur als schlankes Front-End basieren soll und eine recht große Anwendung dahinter steht, bzw. stehen soll.

Na, dann hoffe ich mal auf euer geballtes Wissen und eure Hilfsbereitschaft :D

Sebastian

EDIT: Ach verdammt, war das einfach. Problem ist gelöst, Lösung kommt gleich.
Zuletzt geändert von EyDu am Donnerstag 15. März 2007, 12:11, insgesamt 1-mal geändert.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Donnerstag 15. März 2007, 11:08

So, mein eigener Post und CGI haben bei mir irgendwie eine Eingebung ausgelöst:

Code: Alles auswählen

class Handler(BaseHTTPRequestHandler):

    def do_POST(self):
        import cgi
        ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
        if ctype == "multipart/form-data":
            print cgi.parse_multipart(self.rfile, pdict)
Aber man muss zugeben, das war schon schwierig :D
Antworten