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