import SimpleHTTPServer import SocketServer class h1(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): data="" data+="
" data+="
" data+="" data+="
" data+="
" data+="" data+="
" data+="
" data+="" fs=len(data) ctype = self.guess_type("index.html") self.send_response(200) self.send_header("Content-type", ctype) self.send_header("Content-Length", str(fs)) self.end_headers() self.wfile.write(data) def do_POST(self): length = int(self.headers.getheader('content-length')) data_string=self.rfile.read(length) ctyp=self.headers.getheader('content-Type') #print self.headers #print data_string if ctyp=="application/x-www-form-urlencoded": data_lst=data_string.split("&") values={} for itm in data_lst: f1=itm.split("=") values[f1[0]]=f1[1] elif "multipart/form-data; boundary=" in ctyp: boundary="--"+ctyp[len("multipart/form-data; boundry=")+1:] #print boundary data_lst=data_string.split(boundary) values={} for itm in data_lst: ind1=itm.find("\r\n\r\n") if ind1>0: #print [ind1,itm[2:ind1],itm[ind1+4:-2]] values[itm[2:ind1]]=str(itm[ind1+4:-2]) else: values={"?":"?"} data="" for itm in values: if "name=\"file_upload\""in itm: ind1=itm.find("filename") ind2=itm.find("\"",ind1) ind3=itm.find("\"",ind2+1) fname=itm[ind2+1:ind3] hf=open("D_"+fname,"wb") hf.write(values[itm]) hf.close() data+="
" data+="file uploaded:" data+=fname data+="
" data+="" fs=len(data) ctype = self.guess_type("index.html") self.send_response(200) self.send_header("Content-type", ctype) self.send_header("Content-Length", str(fs)) self.end_headers() self.wfile.write(data) pass pass PORT = 8080 httpd = SocketServer.TCPServer(("", PORT), h1) print "serving at port", PORT httpd.serve_forever()