有没有一种方法可以将上传的图像添加到数据库中并检索它以显示在另一个html页面中?

时间:2020-06-23 08:34:34

标签: database sqlite flask flask-sqlalchemy

我目前正在开发Flask Web应用程序。但是,我不知道如何将用户上传的图像保存到SQLite数据库中并检索它以供以后使用(例如在首页和其他页面上显示)。

我对Web开发非常陌生,所以我还不熟悉许多编程语言。我看过其他页面谈论php的使用,请问是否真的需要这样做?在烧瓶中还有其他方法吗?

如果有人能够引导我,将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以对图像进行base64编码,并使用data:网址

<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

如果您简单粘贴

data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==

在地址栏中,您将看到一个红色的小点

在应用程序中,外观如下:


# FLASK_APP=mini_app flask run
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    __tablename__ = "Users"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    image = db.Column(db.String)


def create_app(config_filename=None, host="localhost"):
    app = Flask("demo_app")
    app.config.update(SQLALCHEMY_DATABASE_URI="sqlite://")
    db.init_app(app)
    with app.app_context():
        db.create_all()
        user = User(name="test", image="iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==")
        db.session.add(user)
        db.session.commit()
    return app

host = "0.0.0.0"
app = create_app(host=host)

@app.route("/image/<string:user_name>")
def show_profile(user_name):
    user = User.query.filter(User.name==user_name).one_or_none()
    if user:
        return f'User: {user.name}<br/>Pic:<img src="data:image/png;base64, {user.image}"/>'
    return "Not Found", 404


if __name__ == "__main__":
    app.run(host=host)

然后转到 http:// localhost:5000 / image / test