Ich hab die letzten zwei Tage einen multipart/form-data Parser von Grund auf neu implementiert, der auch unter Python 3 funktioniert und cgi.FieldStorage() in Bottle ablösen soll. Damit wäre die letzte verbleibende Inkompatibilität zu Python 3 beseitigt (cgi.FieldStorage will unicode haben und verschluckt Newlines) und auch einige andere Dinge besser gelöst als mit cgi.FieldStorage().
Wenn jemand von euch Erfahrung mit kaputten Browsern hat, wäre es nett wenn ihr ein paar Test-Szenarien bei steuern könntet. Die Tests aus werkzeug/test/test_formparser.py und die Bottle-eigenen Tests besteht meine Implementierung bereits.
Ich weiß das:
- setuptools Leerzeilen vor dem ersten Separator ein baut.
- Chrome ab und zu den Content-Type header unterschlägt.
- Internet Explorer den Filename-Parameter des Content-Disposition Headers falsch befüllt.
- manche Browser keine Content-Length angeben.
- der Separator unter Umständen auch innerhalb des Datenbereichs vor kommen kann.
- manche Bibliotheken \n statt \r\n verwenden.
Kennt ihr noch andere Browser-Bugs was das multipart/form-data Format an geht?
Multipart Parser
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Bottle: Micro Web Framework + Development Blog
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Der Parser ist ab sofort open source: http://github.com/defnull/multipart
95% Test Coverage und 100% Python3 kompatibel
95% Test Coverage und 100% Python3 kompatibel

Bottle: Micro Web Framework + Development Blog
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Meh, ich hab mir das fast schon gedacht. Naja, muss ich halt auf die bug reports warten sobald das ganze in Bottle eingebaut ist 

Bottle: Micro Web Framework + Development Blog