[code.view]

[top] / python / PyMOTW / BaseHTTPServer / BaseHTTPServer_POST.py

     #!/usr/bin/env python
     #
     # Copyright 2007 Doug Hellmann.
     #
     #
     #                         All Rights Reserved
     #
     # Permission to use, copy, modify, and distribute this software and
     # its documentation for any purpose and without fee is hereby
     # granted, provided that the above copyright notice appear in all
     # copies and that both that copyright notice and this permission
     # notice appear in supporting documentation, and that the name of Doug
     # Hellmann not be used in advertising or publicity pertaining to
     # distribution of the software without specific, written prior
     # permission.
     #
     # DOUG HELLMANN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
     # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
     # NO EVENT SHALL DOUG HELLMANN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
     # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
     # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
     # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
     # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     #
     
     """Simple POST handler with BaseHTTPServer
     
     """
     
     __version__ = "$Id$"
     #end_pymotw_header
     
     from BaseHTTPServer import BaseHTTPRequestHandler
     import cgi
     
     class PostHandler(BaseHTTPRequestHandler):
         
         def do_POST(self):
             # Parse the form data posted
             form = cgi.FieldStorage(
                 fp=self.rfile, 
                 headers=self.headers,
                 environ={'REQUEST_METHOD':'POST',
                          'CONTENT_TYPE':self.headers['Content-Type'],
                          })
     
             # Begin the response
             self.send_response(200)
             self.end_headers()
             self.wfile.write('Client: %s\n' % str(self.client_address))
             self.wfile.write('User-agent: %s\n' % str(self.headers['user-agent']))
             self.wfile.write('Path: %s\n' % self.path)
             self.wfile.write('Form data:\n')
     
             # Echo back information about what was posted in the form
             for field in form.keys():
                 field_item = form[field]
                 if field_item.filename:
                     # The field contains an uploaded file
                     file_data = field_item.file.read()
                     file_len = len(file_data)
                     del file_data
                     self.wfile.write('\tUploaded %s as "%s" (%d bytes)\n' % \
                             (field, field_item.filename, file_len))
                 else:
                     # Regular form value
                     self.wfile.write('\t%s=%s\n' % (field, form[field].value))
             return
     
     if __name__ == '__main__':
         from BaseHTTPServer import HTTPServer
         server = HTTPServer(('localhost', 8080), PostHandler)
         print 'Starting server, use <Ctrl-C> to stop'
         server.serve_forever()
     
     

[top] / python / PyMOTW / BaseHTTPServer / BaseHTTPServer_POST.py

contact | logmethods.com