La seguente parte di codice dovrebbe essere in grado di essere eseguita in Python 2.7 e Python 3.x.Parse multipart/form-data using cgi.FieldStorage; Nessuna chiave
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 funziona benissimo ed uscite ['param1']
. In Python 3.4, tuttavia, produce [None]
.
Non riesco a ottenere FieldStorage
per ottenere un risultato utilizzabile in Python 3. Sospetto che qualcosa sia cambiato internamente e che ora lo stia usando male. Comunque non riesco a capire cosa. Qualsiasi aiuto è apprezzato.