您好,我目前正在使用Python Flask存储图像,我已经成功使用gridfs将图像存储到mongodb中,但是现在我不确定如何检索图像。
我知道,由于文件很大,它将在fs.chunks中分成多个块。我已经为所有图像创建了一个ID并将其附加到fs.files,因此能够查询结果,而我将仅使用objectID来查询我的fs.chunks集合。但是,我不确定如何显示图像。
没有人知道如何从mongodb中的python flask的gridfs中检索图像。
在api调用中,您必须将URL赋予foldername(在包含该图像的位置),然后它会自动全部显示该特定文件夹中包含的图像(例如http://localhost/url/folder/image.jpeg)
[嗨,所以我找到了一种使用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"/>