FieldStorage bringt mich fast um !!! LOL

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Zilchinger
User
Beiträge: 10
Registriert: Dienstag 18. April 2006, 00:01

Montag 5. Juni 2006, 23:25

Hallo zusammen.
Ich weiß einfach nicht mehr weiter. Nach fast 8 Stunden googlen bin ich echt am Ende!
Ich habe einen HTTPServer und den dazugehörigen Base HTTPRequestHandler (kein CGIHTTPServer).

Im RequestHandler habe ich die Methode do_POST implementiert, die ein Dateiupload entgegen nehmen soll:

im Moment mache ich das ganze so:

Code: Alles auswählen

...
ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
if ctype == 'multipart/form-data':
   query=cgi.parse_multipart(self.rfile, pdict)
   self.send_response(301)
   self.end_headers()
   upfilecontent = query.get('upload')
...
Das ganze funktioniert auch super, in der Liste "upfilecontent" steht nun auch der Inhalt des Files drin, was ich hochgeladen habe.

Nun wird aber überall gesagt, das man lieber Filestorage verwenden soll, was mir auch ganz lieb wäre, da ich irgendwie noch an den filenamen rankommen muß. Leider weiß ich nicht wie das geht!

Es gibt 100e von Beispielen im Netz, aber ich komme auf keinen grünen Zweig:

Code: Alles auswählen

...
ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
if ctype == 'multipart/form-data':
   form=cgi.FieldStorage(self.rfile)
   print form
   self.send_response(301)
   self.end_headers()
   upfilecontent = query.get('upload')
...
Wenn ich mir nun mit print form (wie oben gezeigt) mir den Inhalt anschauen will, sieht das so aus:

FieldStorage[None, None, []]

Sprich alles ist leer, irgendwie bekommt er keine Daten, kann mir vielleicht jemand weiterhelfen?
Wenn ich irgendwie anders an den filename des Uploadfiles rankomme wäre mir das auch lieb.

Ich bin echt am Ende !!! :o

Vielen Dank,
Zilchinger
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 6. Juni 2006, 11:24

Also in colubrid wird das so gelöst: http://trac.pocoo.org/browser/colubrid/ ... st.py#L138

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Zilchinger
User
Beiträge: 10
Registriert: Dienstag 18. April 2006, 00:01

Dienstag 6. Juni 2006, 13:05

Ich habs mir mal angeschaut.
Ich hätte nicht gedacht, das es soviel Aufwand ist! Aber ich denke ich kann da was reengineeren.

Vielen Dank nochmal,
Zilchinger
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Mittwoch 7. Juni 2006, 13:42

jens hat geschrieben:Also in colubrid wird das so gelöst: http://trac.pocoo.org/browser/colubrid/ ... st.py#L138
Jo. Nutzt aber auch kein FieldStorage. Denn Fieldstorage sucks.
TUFKAB – the user formerly known as blackbird
Antworten