From 4a061b094fc204057a6df0a98016574d2377e4b7 Mon Sep 17 00:00:00 2001 From: Ivan Maslov Date: Tue, 21 Jul 2020 17:29:39 +0300 Subject: [PATCH] #New functionallity for Server - recieve files - draft --- PythonRecieveFilesOverHTTP.txt | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 PythonRecieveFilesOverHTTP.txt diff --git a/PythonRecieveFilesOverHTTP.txt b/PythonRecieveFilesOverHTTP.txt new file mode 100644 index 00000000..5b3a0117 --- /dev/null +++ b/PythonRecieveFilesOverHTTP.txt @@ -0,0 +1,39 @@ +def Recieve(inRequest, inGsettings ): +if inRequest.headers.get('Content-Length') is not None: + lInputByteArrayLength = int(inRequest.headers.get('Content-Length')) + lInputByteArray = inRequest.rfile.read(lInputByteArrayLength) + #print(f"BoDY:{lInputByteArray}") + # Extract bytes data + lBoundaryStr = str(inRequest.headers.get('Content-Type')) + lBoundaryStr = lBoundaryStr[lBoundaryStr.index("boundary=")+9:] # get the boundary key + #print(lBoundaryStr) + lSplit = lInputByteArray.split(b'\r\n\r\n') + lDelimiterRNRNIndex = lInputByteArray.index(b'\r\n\r\n') + #print(lSplit) + # Get file name + lSlit0 = lInputByteArray[:lDelimiterRNRNIndex].split(b'\r\n')[1] + lFileNameBytes = lSlit0[lSlit0.index(b'filename="')+10:-1] + lFileNameStr = lFileNameBytes.decode("utf-8") + # File data bytes + lFileDataBytes = lInputByteArray[lDelimiterRNRNIndex+4:] + lFileDataBytes = lFileDataBytes[:lFileDataBytes.index(b"\r\n--"+lBoundaryStr.encode("utf-8"))] + # Create file name + lNowDatetime = datetime.datetime.now() + lFileNameStr = lNowDatetime.strftime("%H_%M_%S_%f") + "." + lFileNameStr.split(".")[-1] # Generate filename + # Save the file + lFile = open(os.path.join(gRobotInputFolderStr, lFileNameStr),"wb")# Save to file + lFile.write(lFileDataBytes) + lFile.close() # Close the file + # Add info about task in gSettings + lTaskRecord = { + "Datetime": lNowDatetime, # Datetime for start + "IsReadyBool": False, # Is result file ready + "UserADStr": inRequest.OpenRPA["User"] # User, who send a task + } + inGSettings["Storage"][gRobotKeyStr]["TaskDict"][lFileNameStr]=lTaskRecord # Set the record + #print(inRequest.headers) + lResponseDict = inRequest.OpenRPAResponseDict + # Send response status code + lResponseDict["StatusCode"]=303 # Redirect after form submit to main orchestrator page + # Send headers + lResponseDict["Headers"]["Location"]="/"