我有一个简单的烧瓶服务器。我使用 pafy 从用户提供的 youtube 链接下载了一个视频。
@app.route('/')
def download():
return render_template('basic.html')
basic.html 模板有一个提交下载操作的表单:
<form action="download_vid" method="post">
Link: <input type="text" name="download_path"><br>
<input type="submit" value="Submit">
</form>
我有另一个端点, /download_vid 看起来像这样。
@app.route('/download_vid', methods=['POST'])
def download_vid():
url = request.form['download_path']
v = pafy.new(url)
s = v.allstreams[len(v.allstreams)-1]
filename = s.download("static/test.mp4")
return redirect(url_for('done'))
所需的链接确实以 .mp4 文件的形式下载到我的静态文件夹中。如果我在本地打开它,我可以观看它,也可以将它用作 HTML 文件中标签的来源。
@app.route('/done')
def done():
return app.send_static_file('test.mp4')
据我了解,“send_static_file”提供静态目录中的文件。但是,当我运行服务器时,我得到一个 404 错误,即使视频显然在那里。
我还为 done() 尝试了不同的版本:
@app.route('/done')
def done():
return return render_template('vid.html')
在这里,vid.html 驻留在模板中,并具有到 static/test.mp4 的硬编码路径。下载完成后加载。在这种情况下,我没有 404 错误,但标签什么也没做,它只是灰色的。如果我在本地打开 vid.html(双击它),它可以工作,它会显示视频。
你能帮我理解发生了什么吗?
我想要实现的是:
- 从用户那里获取输入[完成]
- 使用该输入下载视频 [完成]
- 将该视频返回给用户 [ ??? ]