1

这是我的 run.py 代码

        from flask import *

        app = flask.Flask(__name__)
        app.config.from_object('config')                          
        @app.route('/', methods=['GET','POST'])
        def new_task():
            if flask.request.method == 'POST':
               tts = flask.request.form['tts']
            if int(tts) == 3:
               return redirect("/tts1")
            function()
                flask.flash(str(tts)+'is being selected')
                   print str(tts)+"output"
            else:
               flask.flash('Parakrant ---->')
                return flask.render_template("tasks.html")
            return redirect('/') 
    @app.route('/tts1')
    def wav():
        print "wavfile reached"
        return flask.render_template("s1.html")

这是我的 base.html 文件

    <html>
    <head>
        <title>names</title>
      </head>
      <body>
        <div>PS: <a href="/ps">Home</a></div>
        <hr>
        {% block content %}{% endblock %}
      </body>
    </html>

这是我的tasks.html

  {% extends "base.html" %}
  {% block content %}
  <div class="page">
  <table>
  <tr>
  <form action="{{ url_for('new_task') }}" method="POST" class=new-task>
 </tr>
  <tr>
   <td>
   <label>name :</label>
  <select name="name" width="100px">
   <option value="1">name1</option>
  <option value="2">name2</option>
   <option value="3">name3</option>
  <option value="4">name4</option>
  <option value="5">name5</option>
   </select>
  </td>
   <td>
   &nbsp;
   &nbsp;
    <input class="button" type="submit" value="Press">
   <audio controls>
   <source src="ps.wav" type="audio/wav">
  </audio>
   </td>
    </form>
   </tr>
  </table>
   </div>
   </table>
 {% endblock %}

这是我的 s1.html

    {% extends "base.html" %}
    {% block content %}
      <div class="page">
      <table>
      <tr>
      <form action="{{ url_for('new_task') }}" method="POST" class=new-task>
      </tr>
      <tr>
      <td>
      <label>name :</label>
      <select name="name" width="100px">
      <option value="1">name1</option>
      <option value="2">name2</option>
      <option value="3">name3</option>
      <option value="4">name4</option>
      <option value="5">name5</option>
      </select>
      </td>
      <td>
      &nbsp;
      &nbsp;
      <input class="button" type="submit" value="Press">
      <audio controls>
        <source src="ps.wav" type="audio/wav">
      </audio>
      </td>
      </form>
       </tr>
       </table>
       </div>
       </table>
    {% endblock %}

在 s1.html 中,我有一个指向音频 wav 文件的超链接。我想从 s1.html 播放音频文件。wav 文件存在于根目录中。
它正在抛出错误

GET /ps.wav HTTP/1.1" 404 请告诉如何解决这个问题。我们将不胜感激!

4

2 回答 2

3

如果您使用默认的静态文件配置运行 Flask,那么您应该将您的波形文件放在“静态”文件夹中,然后在您的模板中将它们引用为

{{ url_for("static", filename = "ps.wav") }}
于 2013-06-29T02:22:48.713 回答
1

在音频文件的情况下,当你给出时<audio src="C://somePath"/>,这会抛出一个错误,说cannot load local resource. 这是有道理的,因为任何网页都不能简单地给出一个本地路径并访问你的私人文件。

如果您尝试src property通过 JS 更改以动态路径播放音频,那么这里是使用 Flask 服务器和 HTML 的示例实现。

服务器.py

@app.route("/")
def home():
     return render_template('audioMap.html')

@app.route('/<audio_file_name>')
def returnAudioFile(audio_file_name):
    path_to_audio_file = "C:/Audios/yourFolderPath" + audio_file_name
    return send_file(
         path_to_audio_file, 
         mimetype="audio/wav", 
         as_attachment=True, 
         attachment_filename="test.wav")

audioMap.html

{% raw %}
<!DOCTYPE html>
<html>
<body>
    AUDIO: <audio src="xyz.wav" controls  >
           //Here I have given src="dummy value", but according to your needs, you can always change the src property value using JS and flask endpoint will fetch that audio file.
</body>
</html>
{% endraw %}

解释:

当您在src属性下提供音频文件名时,这会在烧瓶中创建一个获取请求,如图所示

127.0.0.1 - - [04/May/2021 21:33:12] "GET /xyz.wav HTTP/1.1" 200 -

如您所见,flask 发送了一个获取xyz.wav文件的请求。因此,为了服务这个 get 请求,我们编写了一个端点,它获取音频文件名,从本地目录中读取它,然后返回它。因此音频显示在 UI 上。

注意:这仅在您通过烧瓶使用 render_template 方法渲染 HTML 文件或使用烧瓶作为 Web 服务器时才有效。

于 2021-05-04T16:26:22.663 回答