【发布时间】:2015-12-12 01:07:48
【问题描述】:
我有一个简单的烧瓶服务器。我使用 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(双击它),它可以工作,它会显示视频。
你能帮我理解发生了什么吗?
我想要实现的是:
- 接受用户的输入 [完成]
- 使用该输入下载视频 [完成]
- 将该视频返回给用户 [ ??? ]
【问题讨论】:
标签: python web flask static-files pafy