У меня есть программа, в которую я загружаю файл, и он выполняет распознавание голоса. Но он отображает результат на другой странице, я использовал app.route. Но я хочу отобразить результат на той же странице, где у меня есть кнопка «Отправить». Я знаю, что мне нужно сделать это с ajax, но я не понимаю как. Моя программа выглядит следующим образом:
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
# check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
# if user does not select file, browser also
# submit an empty part without filename
if file.filename == '':
flash('No selected file')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
fileLocation = os.path.join(app.config['UPLOAD_FOLDER'], filename)
file.save(fileLocation)
convertedFile = normalize_file(fileLocation)
os.remove(fileLocation)
return redirect(url_for('transcribe',
filename=convertedFile))
return render_template("result.html")
@app.route('/results/<filename>') def transcribe(filename):
global transcription_in_progress
if(transcription_in_progress):
print("Oh no! Another transcription was in progress, waiting 5 seconds...")
time.sleep(5)
transcribe(filename)
print("Starting transcription...")
transcription_in_progress = True
fs, audio = wav.read(os.path.join(app.config['UPLOAD_FOLDER'], filename))
processed_data = ds.stt(audio)
os.remove(os.path.join(app.config['UPLOAD_FOLDER'], filename))
transcription_in_progress = False
return processed_data
, а файл html:
<html lang="en">
<head>
<title>Example 1</title>
</head>
<body>
<div class="center-align">
<h1>Stephanie's speech recognition app</h1>
<form method=post enctype=multipart/form-data>
<input type=file name=file >
<div>
<button>Submit</button>
</div>
<input type=submit value=Upload>
</form>
</div>
</body>
</html>