簡體   English   中英

如何使用Flask打開下載對話框?

[英]How do I open up a download dialog box using Flask?

我正在嘗試讓用戶使用gTTS進行文本到語音轉換后下載mp3文件。 出現Flash消息,但未打開下載對話框。

這是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>

請幫忙。

您需要返回send_file的結果。 它會生成一個響應對象,如果Flask是從視圖函數返回的,則Flask只能對該對象執行某些操作。

with TemporaryFile() as f:
    tts.write_to_fp(f)
    return send_file(f, as_attachment=True, attachment_filename="tts.mp3")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM