Lo intenté haciéndolo de esta manera, pero la imagen no apareció en la página HTML. Es una aplicación de matraz que accede a la base de datos de "imagen" que tiene imágenes almacenadas en ella con identificadores únicos. ¿Cómo obtengo la imagen almacenada en la base de datos usando un matraz y mostrar la imagen en la página html que estoy renderizando

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)

0
ManojKumar 7 may. 2020 a las 11:49

2 respuestas

Sé que esta no es la respuesta que está buscando, pero almacenar las imágenes reales en el disco y solo recuperar el nombre de archivo o la ubicación de la base de datos también funciona.

El matraz puede devolver esta imagen muy fácilmente usando

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

Supongo que tiene una razón específica para almacenar las imágenes en una base de datos, pero tal vez esto lo ayude de todos modos. Tenga en cuenta que esto no devuelve html con la imagen incrustada, sino solo la imagen.

0
c8999c 3f964f64 7 may. 2020 a las 09:17

Palabra clave: blob

Convierta su imagen en blob de cadena base64, luego puede almacenarla en db como campo de texto

0
agentp 7 may. 2020 a las 09:15