Как сохранить изображения в базе данных и отобразить их на странице HTML, используя Flask? - PullRequest
0 голосов
/ 07 мая 2020

Я пробовал сделать это таким образом, но изображение не появилось на странице HTML Это приложение flask, обращающееся к базе данных «изображений», в которой хранятся изображения с уникальными идентификаторами Как мне получить изображение хранится в базе данных, используя flask, и отображаю изображение на странице html, которую я визуализирую

from flask_sqlalchemy import SQLAlchemy
from flask import *
from sqlalchemy import *
from sqlalchemy.orm import scoped_session, sessionmaker
from io import BytesIO
import base64
import image

#from sqlalchemy_imageattach.entity import Image, image_attachment


app = Flask(__name__)
app.secret_key = "manoj"
db = SQLAlchemy(app)
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://root@localhost/image'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)
class Images(db.Model):
    __tablename__ = "imgs"
    id = db.Column(db.Integer , primary_key = True , nullable=False)
    img = db.Column(db.LargeBinary)

@app.route('/')
def index():
    return render_template("parallax.html")

@app.route('/upload' , methods = ['POST'])
def upload():
    img  =  request.files['img_file']
    newfile = Images(img = img.read())
    db.session.add(newfile)
    db.session.commit()
    return "File Uploaded : " + img.filename

@app.route('/download')
def download():
    img = Images.query.filter_by(id = 1).first()
    newimg =  BytesIO(img.img) 
    img = image(newimg)
    return render_template("image.html" , data = img)

if __name__ == "__main__":
    app.run(debug = True)

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Я знаю, что это не тот ответ, который вы ищете, но сохранение реальных изображений на диске и получение только имени файла или местоположения из базы данных также работает.

flask может вернуть это изображение очень легко использовать

        return flask.redirect(flask.url_for('PATH', filename='YOURIMAGE.png'), code=301)

Я думаю, у вас есть особая c причина для хранения изображений в базе данных, но, возможно, это все равно вам поможет. Обратите внимание, что это не возвращает html со встроенным изображением, а только с изображением.

0 голосов
/ 07 мая 2020

Ключевое слово: blob

Преобразуйте изображение в строковый blob base64, затем вы можете сохранить его в db как текстовое поле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...