def render(self, ctx):
    request = iweb.IRequest(ctx)
for key, vals in request.args.items():
    for val in vals:
        print(key, val)
print('file uploads ----------------')
for key, records in request.files.items():
    print(key)
for record in records:
    name, mime, stream = record
data = stream.read()
How can I accomplish file uploads in twisted.web that don't suck?