2016-06-29 4 views
0

Ich versuche, den Benutzer nach einer Text-zu-Sprache-Konvertierung mit gTTS eine MP3-Datei herunterladen zu lassen. Die Flash-Meldung wird angezeigt, aber der Download-Dialog wird nicht geöffnet. HierWie öffne ich ein Download-Dialogfeld mit Flask?

ist der Python-Code:

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 Code (das Formteil nur):

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

Bitte helfen.

+0

ProTip ™: Sie können Ihre Beiträge jederzeit bearbeiten, um Korrekturen vorzunehmen. –

+0

JavaScript Frage, wirklich. Sollte nicht Kolben sein. – corvid

Antwort

1

Sie müssen das Ergebnis send_file zurückgeben. Es erzeugt nur ein Antwortobjekt, Flask wird damit nichts anfangen.

return send_file(...) 
+0

Danke. Ich bin neu in diesem Zeug. Können Sie mir erklären, welchen Code ich in das HTML (Frontend) schreiben soll, um dann ein Downloaddialogfeld mit diesem Antwortobjekt auszulösen? –

+1

@VivekNayak ein Link – davidism

Verwandte Themen