在烧瓶中创建可下载文件的问题

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 代码进行响应

Range header info

这是一个粗略的未经测试的版本:

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)