def upload_file(): # check for numFiles entry if 'numFiles' not in request.form or request.form['numFiles'] == "": content = {"Error": "Missing 'numFiles' in POST request"} return content, 400 numFiles = int(request.form['numFiles']) if numFiles == 0: content = {"Error": "No files added in POST request"} return content, 400 if 'basePhotoIndex' not in request.form or request.form[ 'basePhotoIndex'] == "": content = {"Error": "Missing 'basePhotoIndex' in POST request"} return content, 400 basePhotoIndex = int(request.form['basePhotoIndex']) # Error check for i in range(numFiles): entry = 'file[' + str(i) + ']' if entry not in request.files: content = {"Error": "Missing " + entry + " in POST request"} return content, 400 file = request.files[entry] if file.filename == '': content = {"Error": "File field is empty in POST request"} return content, 400 if not (file and allowed_file(file.filename)): content = { "Error": "File is wrong format (only accepts png, jpg, jpeg)" } return content, 400 # Create a new session scale_percent = 0 newAlbum = Album(scale_percent) new_session_id = appSessions.new_session(newAlbum) session_path = os.path.join(uploadFolder, new_session_id) os.mkdir(session_path) output_photo_path = "" # Save file in path for i in range(numFiles): entry = 'file[' + str(i) + ']' file = request.files[entry] filename = secure_filename(file.filename) if (i == basePhotoIndex): output_photo_path = os.path.join(session_path, "retouched_" + filename) file.save(os.path.join(session_path, filename)) newAlbum.insert_photo(Photo(os.path.join(session_path, filename))) newAlbum.facial_classification() newAlbum.update_base_photo_index(basePhotoIndex) newAlbum.blink_detection() newAlbum.remove_blinking_faces() newAlbum.write_output_photo(output_photo_path) newAlbum.status = "READY" content = {"session_id": new_session_id} return content, 200