从GridFS Python Flask Mongodb检索并显示图像

问题描述 投票:2回答:2

您好,我目前正在使用Python Flask存储图像,我已经成功使用gridfs将图像存储到mongodb中,但是现在我不确定如何检索图像。

我知道,由于文件很大,它将在fs.chunks中分成多个块。我已经为所有图像创建了一个ID并将其附加到fs.files,因此能够查询结果,而我将仅使用objectID来查询我的fs.chunks集合。但是,我不确定如何显示图像。

没有人知道如何从mongodb中的python flask的gridfs中检索图像。

python mongodb flask gridfs
2个回答
0
投票

在api调用中,您必须将URL赋予foldername(在包含该图像的位置),然后它会自动全部显示该特定文件夹中包含的图像(例如http://localhost/url/folder/image.jpeg


0
投票

[嗨,所以我找到了一种使用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编解码器才能使用编解码器

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"/>
© www.soinside.com 2019 - 2024. All rights reserved.