Der folgende Code sollte in Python 2.7 und Python 3.x ausgeführt werden können.Parsen Sie mehrteilige/Formulardaten mit cgi.FieldStorage; Keine Schlüssel
from __future__ import unicode_literals
from __future__ import print_function
import cgi
try:
from StringIO import StringIO as IO
except ImportError:
from io import BytesIO as IO
body = """
--spam
Content-Disposition: form-data; name="param1"; filename=blob
Content-Type: binary/octet-stream
value1
--spam--
"""
parsed = cgi.FieldStorage(
IO(body.encode('utf-8')),
headers={'content-type': 'multipart/form-data; boundary=spam'},
environ={'REQUEST_METHOD': 'POST'})
print([key for key in parsed])
In Python 2.7 es läuft gut, und es gibt ['param1']
. In Python 3.4 gibt es jedoch [None]
aus.
Ich kann FieldStorage
nicht bekommen, um ein verwendbares Ergebnis in Python 3 zu erhalten. Ich vermute, dass etwas intern geändert wurde und ich es jetzt falsch benutze. Aber ich kann nicht herausfinden, was. Jede Hilfe wird geschätzt.