gpt4 book ai didi

python - 如何在 Flask 中显示 MySql 数据库中的图像

转载 作者:行者123 更新时间:2023-11-29 10:18:10 24 4
gpt4 key购买 nike

我有以下模型。我成功将数据插入mysql数据库,但无法在索引页中显示图像。如何在我的模板中将来自 mysql 的 LargeBinary 对象显示为图像?

class ginfo(db.Model):

id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(20))
comment=db.Column(db.String(1000))
picdata=db.Column(db.LargeBinary)

我从页面中获取的变量为:

        name=request.form['name']
comment=request.form['comment']
file=request.files['inputFile']

并将数据插入mysql:

    signature=ginfo(name=name,comment=comment,picdata=file.read())
db.session.add(signature)
db.session.commit()

我用以下命令查询整个行和列:

    result=ginfo.query.all()
return render_template('index.html',result=result)

我试图按如下方式显示数据:

{%for r in result%}
<div class="page-header">
<h1>{{r.name}}</h1>
</div>
<div class="well">
<p>{{r.comment}}</p>
</div>
<img src={base64.decodestring(r.picdata)}/>
{%endfor%}

最佳答案

例如,您可以通过提供图像数据作为响应的路由来解决此问题,例如创建:

@app.route('/img/<int:img_id>')
def serve_img(img_id):
pass # look up via id, create response with appropriate mimetype

并在模板中,引用此路线:

{% for r in result %}
<img src="{{ url_for('serve_img', img_id=r.id)}}"
{% endfor %}

另一种方法是使用 data url 直接将图像嵌入到您的响应中,基本上是对数据进行 Base64 编码并将其直接包含在渲染的响应页面中。

我个人会避免使用第二种方法,因为编码为 base64 会使大小增加约 30%,并且将图像嵌入为数据 URL 也会阻止客户端进行有效缓存。

关于python - 如何在 Flask 中显示 MySql 数据库中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49795388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com