我有下面的模型。我成功地将数据插入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%}
1条答案
按热度按时间8aqjt8rx1#
例如,您可以通过设置一个路由将图像数据作为响应来解决此问题,例如创建:
在模板中,请参考以下路线:
另一种方法是使用数据url直接将图像嵌入到响应中,基本上是base64编码数据并直接将其包含在呈现的响应页面中。
我个人会避免使用第二种方法,因为base64编码将使大小增加约30%,而将图像作为数据url嵌入也会阻止客户端进行有效的缓存。