diff --git a/src/python/scripts/wsgi_test4.py b/src/python/scripts/wsgi_test4.py new file mode 100755 index 0000000000000000000000000000000000000000..ea64038daf12df502bc1013fc16a7b9c5918cb60_c3JjL3B5dGhvbi9zY3JpcHRzL3dzZ2lfdGVzdDQucHk= --- /dev/null +++ b/src/python/scripts/wsgi_test4.py @@ -0,0 +1,68 @@ +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 = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + <html><head><title>WSGI_test4.py</title> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + </head><body><h1>WSGI_test4.py</h1> + <form action="%(SCRIPT_NAME)s" method="POST" enctype="multipart/form-data"> + Image file name: <input name="image_file" type="file"><br> + <input name="submit" type="submit"> + </form> + </body> + </html>""" + + 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 + +wasd.wsgi_run(application)