in WebApp.py [0:0]
def deal_post_data(self):
boundary = self.headers.plisttext.split("=")[1]
remainbytes = int(self.headers['content-length'])
line = self.rfile.readline()
remainbytes -= len(line)
if not boundary in line:
return (False, "Content NOT begin with boundary")
line = self.rfile.readline()
remainbytes -= len(line)
fn = re.findall(r'Content-Disposition.*name="file"; filename="(.*)"', line)
if not fn:
return (False, "Can't find out file name...")
path = self.translate_path(self.path)
fn = os.path.join(path, fn[0])
line = self.rfile.readline()
remainbytes -= len(line)
line = self.rfile.readline()
remainbytes -= len(line)
try:
out = open(fn, 'wb')
except IOError:
return (False, "Can't create file to write, do you have permission to write?")
preline = self.rfile.readline()
remainbytes -= len(preline)
while remainbytes > 0:
line = self.rfile.readline()
remainbytes -= len(line)
if boundary in line:
preline = preline[0:-1]
# This is the end of the file being uploaded
if preline.endswith('\r'):
preline = preline[0:-1]
out.write(preline)
out.close()
# we got the file in the server, Uploading it now to S3
data = open(fn, 'rb')
filena = fn.split("/")[-1]
uplo = s3.Bucket('kmsworkshop-'+GlobalAcc).put_object(Key=filena, Body=data)
if uplo:
print("Upload to S3 OK")
else:
print("Upload to S3 Error")
# the file is uplodaded to S3, so we erase it from the local server
os.remove(fn)
return (True, "File '%s' upload success!" % filena)
else:
out.write(preline)
preline = line
return (False, "Unexpect Ends of data.")