def makeSession (user, group, session=None): t = str(int(time.time())) if session == None: r = str(random.randint(10000, 99999)) data = user + t + r session = getMd5(data) sessionPath = TEMPPATH + group + '_' + getMd5(user) os.system('echo ' + session + ',' + t + ' > ' + sessionPath) return user + '|' + group + '|' + session
def makeToken (user, group, token=None): t = str(int(time.time())) if token == None: r = str(random.randint(10000, 99999)) data = user + t + r token = getMd5(data) tokenPath = TEMPPATH + group + '_' + getMd5(user) os.system('echo ' + token + ',' + t + ' > ' + tokenPath) return user + '|' + group + '|' + token
def clearToken (tokenStr): tmp = tokenStr.split('|') if len(tmp) == 3: user = tmp[0] group = tmp[1] tokenPath = TEMPPATH + group + '_' + getMd5(user) os.system('rm ' + tokenPath)
def checkToken (tokenStr): # 检查传值是否为空 if tokenStr == None: return 4 tmp = tokenStr.split('|') # 检查传值是否符合我们的设计要求 if len(tmp) != 3: return 4 user = tmp[0] group = tmp[1] token = tmp[2] tokenPath = TEMPPATH + group + '_' + getMd5(user) # 检查服务器存储的对应 session 文件是否存在 if not os.path.exists(tokenPath): return 4 # 读取文件对比 with open(tokenPath, 'r') as f: # 获取存储的各项值 saveStrArr = str(f.read()).split(',') saveToken = saveStrArr[0] saveTime = int(saveStrArr[1]) nowTime = int(time.time()) # 看 token 值是否一致 if token != saveToken: return 1 # 看时间是否有效 elif (nowTime - saveTime) > 3600: return 2 # 正常 else: return 0
async def upload(request): # 字节码转16进制字符串 def bytes2hex(bytes): hexstr = u"" for i in range(10): t = u"%x" % bytes[i] if len(t) % 2: hexstr += u"0" hexstr += t return hexstr.lower() # 根据16进制字符串获取文件后缀 def getSuffix(hexStr): print(hexStr) for i in SUPPORT_TYPE: if i in hexStr: return SUPPORT_TYPE[i] return 400 # 判断参数是否正确 if not request.files and not request.files.get('file'): return fail('参数错误', 400) image = request.files.get('file').body # 判断文件是否支持 imageSuffix = getSuffix(bytes2hex(image)) if imageSuffix == 400: return fail('不支持的文件类型', 400) # 组织图片存储路径 md5Name = getMd5(image) saveDir = UPLOAD_PATH + md5Name[0:2] + '/' savePath = saveDir + md5Name[2:] + '.' + imageSuffix resPath = '/' + md5Name[0:2] + '/' + md5Name[2:] + '.' + imageSuffix # 如果文件夹不存在,就创建文件夹 if not os.path.exists(saveDir): os.makedirs(saveDir) # 将文件写入到硬盘 tempFile = open(savePath, 'wb') tempFile.write(image) tempFile.close() # 给客户端返回结果 return ok({"path": resPath})
def checkSession (session): if session == None: return 4 tmp = session.split('|') user = tmp[0] group = tmp[1] session = tmp[2] sessionPath = TEMPPATH + group + '_' + getMd5(user) if os.path.exists(sessionPath): with open(sessionPath, 'r') as f: saveText = str(f.read()).split(',') saveSession = saveText[0] saveTime = int(saveText[1]) nowTime = int(time.time()) if session != saveSession: return 1 elif (nowTime - saveTime) > 3600: return 2 else: return 0 else: return 4
def clearSession (session): tmp = session.split('|') user = tmp[0] group = tmp[1] sessionPath = TEMPPATH + group + '_' + getMd5(user) os.system('rm ' + sessionPath)