文件下载 Flask 文件和流

有本地文件 

放到nginx跟目录下,通过访问nginx下载:略

flask返回文件

@api.route('/file/down')
def excel_down():
    directory = r'D:/'
    filename = 'www.rar'
    file_name = '测试.rar'
    response = make_response(send_from_directory(directory, filename, as_attachment=True))
    response.headers["Content-Disposition"] = "attachment; filename={}".format(file_name)
    return response

没有本地文件

通过设置response的类型下载

yield作用是后台生成一部分数据,前台下载一部分,不是等到全部传输完再进行下载,减少耗时

@api.route('/stream/down')
def stream_down():
    def generate():
        for row in range(50000):
            line = []
            for col in range(500):
                line.append(str(col))

            if row % 1000 == 0:
                print 'row: %d' % row
            yield ','.join(line) + '\n'

    response = Response(generate(), mimetype='text/csv')
    response.headers["Content-Disposition"] = "attachment; filename={}".format('大文件.csv')
    return response

参考

Flask 文件和流

猜你喜欢

转载自www.cnblogs.com/lurenjia1994/p/9958090.html