烧瓶将图像从sqlite Blob传递到模板

时间:2020-05-06 21:42:29

标签: python html database sqlite flask

enter image description here我有一个数据库,该数据库将图像存储在其中一列中,它们存储为BLOB,这是我如何保存图像的方法:

with open("download.png", 'rb') as file:
    data = file.read()

cursor.execute("INSERT INTO my_table VALUES (?,?,?,?,?,?) ", (value_list))

这是我如何检索它:

cursor.execute("SELECT * FROM my_table")
my_list = cursor.fetchall()
DDBB.close()

这是我通过的方式:

@app.route('/')
def index():
    posts = get_posts()

    return render_template("index.html", my_list=posts)

这就是我将其用于:

{% for item in my_list %}
<div class="col-4 text-center mt-5">
    <div class="card" style="width: 18rem;">
        <img src="data:image/png;base64,{{ item[0] }}" id="imgslot" class="card-img-top">
        <div class="card-body">
            <p class="mb-1">Name: {{ item[2] }}</p>
            <p class="mb-1">Location: {{ item[1] }}</p>
            <p class="mb-2">{{ item[3] }}</p>
            <p class="mb-2">Posted by: {{ item[4] }}</p>
            <a href="#" class="btn btn-dark">Go somewhere</a>
        </div>
    </div>
</div> 
{% endfor %}

卡正在正确读取所有内容,但图像未加载,使用chrome检查似乎值未正确通过。

任何人都可以帮助我更好地理解这一点(我是flask的新手,没有html经验)

2 个答案:

答案 0 :(得分:0)

在这种情况下,显示添加到数据库中的信息以及在inspect元素中获得的路径将有助于更好地理解错误。确保正确通过路径。试试看:https://pynative.com/python-mysql-blob-insert-retrieve-file-image-as-a-blob-in-mysql/

您可以将图像保存在静态文件夹中,然后使用

从那里获取图像。

<img id="imgID" src="{{ url_for('static',filename=image_name) }}">

答案 1 :(得分:0)

问题在于读取值的方式:

for y in range(len(my_list)):
        rec_data=my_list[y][0]

        with open('static/img/post/img'+str(y)+'.jpg','wb') as f:
            f.write(rec_data)