Udacity'nin Tam Stack Foundations kursundan bir egzersiz yapmaya çalışıyorum. Temelde ben çok parçalı form ile gönderilen message
adında bir post değeri elde etmek istiyoruz, BaseHTTPRequestHandler
benim alt sınıf içindeki do_POST
yöntemine sahip, bu yöntem için kodu şöyledir:cgi.parse_multipart işlevi, TypeError'ı Python 3'e atar
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() )
sorun cgi.parse_multipart(self.rfile, pdict)
atma olmasıdır Bir istisna: TypeError: can't concat bytes to str
, uygulama kurs için videolarda sağlandı, ancak Python 2.7 kullanıyorlar ve python 3 kullanıyorum, bütün öğleden sonra bir çözüm aradım ama yararlı bir şey bulamadım. python 3'te bir multipart formdan geçirilen verileri okumak için doğru yol ol?
str(boundary)
için kullanımını değiştirme '. Bununla nasıl başa çıkılır? –@AmitBadhekaPykihStaff aşağıdaki io içe aktarma işlemini BytesIO'dan gerçekleştirmeye çalışabilir ve sonra da 'cgi.parse_multipart (BytesIO (yourcontent), pdict) ' – CarlJ