【发布时间】:2015-03-24 17:02:41
【问题描述】:
在 Flask(微型 Web 框架)中,我们有一个视图:
@app.route('/download/<id>/<resolution>/<extension>/')
def download_by_id(id, resolution=None, extension=None):
stream = youtube.stream_url(id, resolution, extension)
binary = requests.get(stream['url'], stream=True)
return flask.Response(
binary,
headers={'Content-Disposition': 'attachment; '
'filename=' + stream['filename']})
在模板中,我们有一个链接为<a href="/download/adkdsk457jds/240p/mp4/">Download 240p Video</a>,当点击它时,它应该开始下载该视频。
问题是:
在一些没有安装 IDM 等下载管理器的浏览器中运行良好。但是 IDM 无法下载它。 IDM 只是挂在http://example.com/download/adkdsk457jds/240p/mp4/
Firefox 自己的下载管理器也是如此。 Firefox 只是下载一个普通的 .html 页面,而不是实际的视频。
但是,当没有安装 IDM 或其他下载管理器时,视频会在 Chrome 中成功下载。
请帮助和建议为什么它不起作用。我需要更改代码中的某些内容吗?
【问题讨论】:
-
您是否尝试更改网址以使其以
.mp4结尾? -
通过url,你的意思是把文件名改成video1.mp4还是什么?
-
你的
route参数和href包含什么。 -
@BartoszMarcinkowski 好吧,我不确定您所说的 href 是什么意思,但这里
href指的是我上面展示的烧瓶视图。所以不确定在这里添加扩展会有什么帮助? -
下载管理器希望能够使用 HTTP-Range 请求; Flask 未设置为执行范围。我怀疑这就是造成这里问题的原因。
标签: python file stream flask python-requests