I'm trying to make an exercise from Udacity's Full Stack Foundations course. I have the do_POST
method inside my subclass from BaseHTTPRequestHandler
, basically I want to get a post value named message
submitted with a multipart form, this is the code for the method:
def do_POST(self): try: if self.path.endswith("/Hello"): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers ctype, pdict = cgi.parse_header(self.headers['content-type']) if ctype == 'multipart/form-data': fields = cgi.parse_multipart(self.rfile, pdict) messagecontent = fields.get('message') output = "" output += "<html><body>" output += "<h2>Ok, how about this?</h2>" output += "<h1>{}</h1>".format(messagecontent) output += "<form method='POST' enctype='multipart/form-data' action='/Hello'>" output += "<h2>What would you like to say?</h2>" output += "<input name='message' type='text'/><br/><input type='submit' value='Submit'/>" output += "</form></body></html>" self.wfile.write(output.encode('utf-8')) print(output) return except: self.send_error(404, "{}".format(sys.exc_info()[0])) print(sys.exc_info() )
The problem is that the cgi.parse_multipart(self.rfile, pdict)
is throwing an exception: TypeError: can't concat bytes to str
, the implementation was provided in the videos for the course, but they're using Python 2.7 and I'm using python 3, I've looked for a solution all afternoon but I could not find anything useful, what would be the correct way to read data passed from a multipart form in python 3?