python - 从 GridFS Python Flask Mongodb 检索和显示图像

标签 python mongodb flask gridfs

嗨,我目前正在使用 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/

相关文章:

python - 如何让 python 的 pprint 返回一个字符串而不是打印?

python - Django 表单自定义模型表单字段标签

javascript - MongoDB mapReduce 每分钟文档计数由附加类别字段分隔

mongodb - 通过 spark-submit 将额外的 jar 传递给 Spark

flask - 如何在支持的 SQL alchemy 中存储参数,这些参数将传递给 Flask 应用程序中的 celery 任务

python - 我如何知道 Flask WebApp 的用户使用的是 Windows 还是 Linux 计算机?

python - 将列转换为日期格式( Pandas 数据框)

python - Sublime Text 2 构建路径错误

javascript - METEOR 更改选择标签颜色

python - 您可以将 HTTPS 功能添加到 python flask Web 服务器吗?