def application (environ, start_response): """This demonstrates a minimal http upload CGI. It can operate as a standard CGI or as a CGIplus script. It accepts a GIF, JPEG or PNG file and displays it in the browser. """ if os.environ["REQUEST_METHOD"] == "POST": display_uploaded_file (start_response, "image_file") else: print_html_form (start_response) return ('') def print_html_form (start_response): """This prints out the html form. Note that the action is set to the name of the script which makes this is a self-posting form. In other words, this cgi both displays a form and processes it. """ HTML_TEMPLATE = """ WSGIref_test4.py

WSGIref_test4.py

Image file name:
""" wsgi_write = start_response('200 OK',[('Content-type','text/html')]) wsgi_write (HTML_TEMPLATE % {'SCRIPT_NAME':os.environ['SCRIPT_NAME']}) def display_uploaded_file (start_response, form_field): """This display an image file uploaded by an HTML form. """ form = cgi.FieldStorage() if not form.has_key(form_field): return fileitem = form[form_field] if not fileitem.file: return if not fileitem.filename: return filename = fileitem.filename.lower() status = '200 OK'; if filename.rfind(".gif") != -1: response_headers = [('Content-type','image/gif')] elif filename.rfind(".jpg") != -1: response_headers = [('Content-type','image/jpeg')] elif filename.rfind(".png") != -1: response_headers = [('Content-type','image/png')] else: wsgi_write = start_response('200 OK',[('Content-type','text/html')]) wsgi_write ("Only GIFs, JPEGs and PNGs handled by this test.") return response_headers += [('expires','01 Jan 2005 00:00:00 GMT')] wsgi_write = start_response(status,response_headers) while 1: chunk = fileitem.file.read(100000) if not chunk: break wsgi_write (chunk) del fileitem import wasd; import cgi import cgitb; cgitb.enable() import os, sys from wsgiref.handlers import CGIHandler CGIHandler().run(application)