How do I stream a file using werkzeug?

后端 未结 2 1983
萌比男神i
萌比男神i 2020-12-16 03:59

I want to stream a big file via werkzeug.
Currently my wsgi application looks like this:

from werkzeug.wrappers import Request, Response
from werkzeug.ws         


        
相关标签:
2条回答
  • 2020-12-16 04:08

    Haven't tried myself but I think following will work.

    g = file(path_to_bigfile) # or any generator
    return Response(g, direct_passthrough=True)
    
    0 讨论(0)
  • 2020-12-16 04:15

    Just in case one would additionally like to: 1. preserve the file name 2. issue download without page redirect

    # file_name assumed to be known
    # file_path assumed to be known
    file_size = os.path.getsize(file_path)
    fh = file(file_path, 'rb')
    return Response(fh,
                    mimetype='application/octet-stream',
                    headers=[
                        ('Content-Length', str(file_size)),
                        ('Content-Disposition', "attachment; filename=\"%s\"" % file_name),
                    ],
                    direct_passthrough=True)
    
    0 讨论(0)
提交回复
热议问题