我试图让用户在使用gTTS进行文本到语音转换后下载mp3文件。出现闪存消息,但下载对话框无法打开。
这是Python代码:
def mytts():
if request.method == 'POST':
if not request.form['text']:
flash('Text needed to proceed', 'error')
else:
text_input = request.form['text']
tts = gTTS(text=text_input, lang='en')
f=TemporaryFile()
tts.write_to_fp(f)
flask.send_file(f,as_attachment=True,attachment_filename="MyTTSOutput.mp3", mimetype="audio/mpeg")
f.close()
flash('Successful Text-to-Speech Convert')
return redirect(url_for('mytts'))
return render_template('mytts.html')
HTML代码(仅限表单部分):
<form action="" method=post class="form-horizontal">
<h2>Convert Text To Speech</h2>
<div class="control-group">
<div class="controls">
<textarea name="text" rows=10 class="input-xlarge" placeholder="Enter text to be converted here" required>{{ request.form.text }}</textarea>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn btn-success">CONVERT!</button>
<a href="{{ url_for('index') }}"><button type="button" class="btn btn-info">HOME</button></a>
</div>
</div>
</form>
请帮忙。
答案 0 :(得分:1)
您需要返回send_file
的结果。它生成一个响应对象,如果从视图函数返回,Flask只能对该对象执行某些操作。
with TemporaryFile() as f:
tts.write_to_fp(f)
return send_file(f, as_attachment=True, attachment_filename="tts.mp3")