Advertisement
rfmonk

Base_HTTPServer_POST.py

Feb 9th, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. # this is from The Python
  4. # Standard Library by example
  5. # ISBN13: 9780321767349
  6.  
  7. from BaseHTTPServer import BaseHTTPRequestHandler
  8. import cgi
  9.  
  10.  
  11. class PostHandler(BaseHTTPRequestHandler):
  12.  
  13.     def do_POST(self):
  14.         # Parse the form data posted
  15.         form = cgi.FieldStorage(
  16.             fp=self.rfile,
  17.             headers=self.headers,
  18.             environ={'REQUEST_METHOD': 'POST',
  19.                      'CONTENT_TYPE': self.headers['Content-Type'],
  20.                      })
  21.  
  22.         # Begin the response
  23.         self.send_response(200)
  24.         self.end_headers()
  25.         self.wfile.write('Client: %s\n' %
  26.                          str(self.client_address))
  27.         self.wfile.write('Path: %s\n' % self.path)
  28.         self.wfile.write('Form data:\n')
  29.  
  30.         # Echo back information about what was posted in the form
  31.         for field in form.keys():
  32.             field_item = form[field]
  33.             if field_item.filename:
  34.                 # The field contains an uploaded file
  35.                 file_data = field_item.file.read()
  36.                 file_len = len(file_data)
  37.                 del file_data
  38.                 self.wfile.write(
  39.                     '\tUploaded %s as "%s" (%d bytes)\n' %
  40.                     (field, field_item.filename, file_len))
  41.  
  42.             else:
  43.                 # Regular form value
  44.                 self.wfile.write('\t%s=%s\n' %
  45.                                  (field, form[field].value))
  46.  
  47.         return
  48.  
  49. if __name__ == '__main__':
  50.     from BaseHTTPServer import HTTPServer
  51.     server = HTTPServer(('localhost', 8080), PostHandler)
  52.     print 'Starting server, use <Ctrl-C> to stop'
  53.     server.serve_forever()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement