Seite 1 von 1

FieldStorage bringt mich fast um !!! LOL

Verfasst: Montag 5. Juni 2006, 23:25
von Zilchinger
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

Verfasst: Dienstag 6. Juni 2006, 11:24
von jens
Also in colubrid wird das so gelöst: http://trac.pocoo.org/browser/colubrid/ ... st.py#L138

Verfasst: Dienstag 6. Juni 2006, 13:05
von Zilchinger
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

Verfasst: Mittwoch 7. Juni 2006, 13:42
von mitsuhiko
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.