Я тоже занимался этим вопросом. Я прибег к изменению функции send_file в API фляги. Посмотрите на то, что я сделал здесь:
from flask import current_app, request
from werkzeug.wsgi import wrap_file
from bson.objectid import ObjectId
from gridfs import GridFS, NoFile
def retrieve_image(file_id, mongo):
storage = GridFS(mongo.db, "fs")
try:
fileobj = storage.get(file_id=ObjectId(file_id))
except NoFile:
#404
print()
# mostly copied from flask/helpers.py, with
# modifications for GridFS
data = wrap_file(request.environ, fileobj, buffer_size=1024 * 255)
response = current_app.response_class(
data,
mimetype=fileobj.content_type,
direct_passthrough=True,
)
response.content_length = fileobj.length
response.last_modified = fileobj.upload_date
response.set_etag(fileobj.md5)
response.cache_control.max_age = 31536000
response.cache_control.public = True
response.make_conditional(request)
return response
Монго в функции - это объект flask_pymongo. Дайте мне знать, если я смогу что-нибудь прояснить!