我试图建立一个非常简单的Flask应用程序,将存储图像和用户信息。我将采取从用户使用HTML上传输入元素上传,并将其保存到数据库。找到了一个教程来保存文件到SQLite3从 flask ,但我无法读取图像,并将其呈现为用户HTML图像使用IMG HTML标签。
下面是用于将图像上传到DB的代码,
class Img(db.Model):
id = db.Column(db.Integer, primary_key=True)
img = db.Column(db.Text, unique=True, nullable=False)
name = db.Column(db.Text, nullable=False)
mimetype = db.Column(db.Text, nullable=False)
def upload():
pic = request.files['pic']
if not pic:
return 'No pic uploaded!', 400
filename = secure_filename(pic.filename)
mimetype = pic.mimetype
if not filename or not mimetype:
return 'Bad upload!', 400
img = Img(img=pic.read(), name=filename, mimetype=mimetype)
db.session.add(img)
db.session.commit()
return 'Img Uploaded!', 200
字符串
当我这么做的时候
Response(img.img, mimetype=img.mimetype)
型
图像被打开,但无法找到如何将其发送到HTML IMG标签
现在在Index.html中,我想添加上传的IMG
<img src="{{imageURL}}/>"
型
这种存储图像的方式好吗?
1条答案
按热度按时间wfauudbj1#
由于图像数据是二进制形式的,因此我建议使用LargeBinary类型将数据存储在数据库中。
您可以创建自己的终结点来读取和显示图像。在这种情况下,数据是从数据库中提取出来的,并使用
send_file
函数进行传递。根据您的需要,您可以通过id列(如下例所示)或文件名来标识图像。flask (app.py)
字符串
HTML(模板/索引. html)
型