在烧瓶中创建可下载文件的问题
problem to create a downloadable file in flask
我想创建可下载的文件,我做到了。
但是当我想在下载管理器中下载它时,我不能 Pause/Resume 它必须下载整个文件。
这是我的代码:
@app.route('/Media/music/<filename>', methods=['GET', 'POST'])
def Music(filename):
return send_file('static//Media/music/'+filename, as_attachment=True)
|烧瓶和 Python|
如有任何帮助或参考,我将不胜感激。
谢谢
如果浏览器正在发送它,您将必须检索 Range
header,然后打开文件的字节范围并将其作为文件指针传递给 send_file
:
partial_file = f.seek(start_of_byte_range)
...return send_file(partial_file, ....), 206
https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects
并确保您使用包含部分文件范围的 HTTP 206 而非正常的 200 或其他 HTTP 代码进行响应
这是一个粗略的未经测试的版本:
from flask import request
@app.route('/Media/music/<filename>', methods=['GET', 'POST'])
def Music(filename):
range_header = request.headers.get('Range')
if range_header is not None:
with open('static//Media/music/'+filename, 'rb') as f:
partial_file = f.seek(range_header)
return send_file(partial_file, as_attachment=True, conditional=True), 206
raise Exception("Unknown exception")
return send_file('static//Media/music/'+filename, as_attachment=True)
我想创建可下载的文件,我做到了。 但是当我想在下载管理器中下载它时,我不能 Pause/Resume 它必须下载整个文件。
这是我的代码:
@app.route('/Media/music/<filename>', methods=['GET', 'POST'])
def Music(filename):
return send_file('static//Media/music/'+filename, as_attachment=True)
|烧瓶和 Python|
如有任何帮助或参考,我将不胜感激。 谢谢
如果浏览器正在发送它,您将必须检索 Range
header,然后打开文件的字节范围并将其作为文件指针传递给 send_file
:
partial_file = f.seek(start_of_byte_range)
...return send_file(partial_file, ....), 206
https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects
并确保您使用包含部分文件范围的 HTTP 206 而非正常的 200 或其他 HTTP 代码进行响应
这是一个粗略的未经测试的版本:
from flask import request
@app.route('/Media/music/<filename>', methods=['GET', 'POST'])
def Music(filename):
range_header = request.headers.get('Range')
if range_header is not None:
with open('static//Media/music/'+filename, 'rb') as f:
partial_file = f.seek(range_header)
return send_file(partial_file, as_attachment=True, conditional=True), 206
raise Exception("Unknown exception")
return send_file('static//Media/music/'+filename, as_attachment=True)