在MongoDB中按ObjectId而不是image_名称获取图像
在我的flask应用程序中,我试图检索存储在MongoDB GridFS中的图像。然而,我能找到的唯一工具是在MongoDB中按ObjectId而不是image_名称获取图像,mongodb,flask,Mongodb,Flask,在我的flask应用程序中,我试图检索存储在MongoDB GridFS中的图像。然而,我能找到的唯一工具是mongo.send_file(filename),这个函数似乎只支持使用filename获取图像 由于我有同名的不同图像,我想知道是否还有其他方法可以使用图像文件的唯一ObjectId检索图像?我也一直在处理这个问题。我求助于修改FlaskAPI上的send_file函数。看看我在这里做了什么: 从flask导入当前应用程序,请求 从werkzeug.wsgi导入wrap_文件 从bs
mongo.send_file(filename)
,这个函数似乎只支持使用filename获取图像
由于我有同名的不同图像,我想知道是否还有其他方法可以使用图像文件的唯一ObjectId检索图像?我也一直在处理这个问题。我求助于修改FlaskAPI上的send_file函数。看看我在这里做了什么:
从flask导入当前应用程序,请求
从werkzeug.wsgi导入wrap_文件
从bson.objectid导入objectid
从gridfs导入gridfs,NoFile
def检索图像(文件id,mongo):
存储=GridFS(mongo.db,“fs”)
尝试:
fileobj=storage.get(file\u id=ObjectId(file\u id))
除NoFile外:
#404
打印()
#大部分是从flask/helpers.py复制的,带有
#GridFS的修改
data=wrap_文件(request.environ,fileobj,buffer_size=1024*255)
响应=当前应用程序响应类(
数据,
mimetype=fileobj.content\u类型,
直接通过=真,
)
response.content_length=fileobj.length
response.last_modified=fileobj.upload_日期
response.set_etag(fileobj.md5)
response.cache\u control.max\u age=31536000
response.cache_control.public=True
响应。使_有条件(请求)
返回响应