def deal_post_data()

in WebAppEncSSE.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            
                s3c=boto3.client('s3')
                data = open(fn, 'rb')
                filena = fn.split("/")[-1]
                BUCKET = 'kmsworkshop-'+GlobalAcc
                # provide the ID of key to use for Server Side Encryption
                keyKMS = GlobalKey
                uplo = s3c.put_object(Bucket=BUCKET,
                    Key=filena,
                    Body=data,
                    ServerSideEncryption='aws:kms',
                    SSEKMSKeyId=keyKMS)
                if uplo:
                    print("Upload with Server Side Encrytion to S3 OK")
                else:
                    print("Upload with Server Side Encryption 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.")