Handling forms and files
When submitting forms and uploading files, they are usually sent with the multipart/form-data encoding.
We already saw how to create data encoded in multipart/form-data, and submit it to an endpoint, but how can we handle incoming data in such a format?
How to do it...
The cgi.FieldStorage class in the standard library already provides all the machinery required to parse multipart data and send it back to you in a way that is easy to handle.
We will create a simple web application (based on WSGIApplication) to show how cgi.FieldStorage can be used to parse the uploaded file and show it back to the user:
import cgi
from web_06 import WSGIApplication
import base64
app = WSGIApplication()
@app.route('/')
def index(req, resp):
return (
b'<form action="/upload" method="post" enctype="multipart/form-
data">'
b' <input type="file" name="uploadedfile"/>'
b' <input type="submit" value="Upload">'
b'</form...