嗨,我目前正在使用 Python Flask 来存储我的图像,我已经成功地使用 gridfs 将图像存储到 mongodb 中,但现在我不确定如何检索图像。
我知道由于文件很大,它将在 fs.chunks 中分成块。我可以查询结果,因为我为所有图像创建了一个 id 并将其附加到 fs.files,我将只使用 objectID 来查询我的 fs.chunks 集合。然而,在那之后我不知道如何显示图像。
有谁知道如何从 mongodb 的 gridfs 中为 python flask 检索图像。
最佳答案
嗨,所以我找到了一种使用 python flask 从 mongodb 获取图像的方法。
这就是我们配置 mongodb 连接的方式
app = Flask(__name__)
mongo = os.getenv('MONGODB')
client = MongoClient(mongo)
db = client.products_db
products = db.products
grid_fs = gridfs.GridFS(db)
因此,对于第一个代码块,这就是我使用此代码将图像保存在 gridFS 上的方式。我相信使用 grid_fs.put 将返回一个 id,这将允许您从其他 fs.chunks 和 fs.files 调用它
@app.route('/image/', methods = ["POST"])
def saveImage():
if 'image' in request.files:
image = request.files['image']
name = request.form.get('name')
id = grid_fs.put(image, content_type = pimage.content_type, filename = name)
query = {
'id':id,
'name': request.form.get('name'),
'desc':request.form.get('desc'),
}
status = products.insert_one(query)
if status:
return jsonify({'result': 'Image uploaded successfully'}),201
return jsonify({'result': 'Error occurred during uploading'}),500
从 grid_fs 中检索图像。我必须使用 pip install codecs 才能使用编解码器
item = products.find_one({'id': id})
image = grid_fs.get(item['id'])
base64_data = codecs.encode(image.read(), 'base64')
image = base64_data.decode('utf-8')
然后可以使用它在 html 上显示,html 中的图像是从 grid_fs 接收的二进制字符串
<img src = "data:image/png;base64, {{image}}" alt= "myImage"/>
关于python - 从 GridFS Python Flask Mongodb 检索和显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60630359/