2017-07-01 31 views
0

Ich versuche, Bild auf meiner Website zu rendern, aber es funktioniert nicht (ich sehe nur beschädigte Datei-Symbol). Könntest du mir bitte sagen, was ich falsch mache?Wie man Bild von Flask-SQLAlchemy auf Seite rendert?

Die Art und Weise, wie ich das Bild hochladen:

@app.route('/UploadImages') 
def UploadImages(): 
    return render_template('UploadImages.html') 


@app.route('/uploadImages', methods=['POST']) 
def uploadImages(): 
    name = current_user.USERNAME 
    file = request.files['inputFile'] 
    newFile=IMAGES(
     NAME=file.filename, 
     USERNAME=name, 
     DATA=file.read() 
    ) 
    db.session.add(newFile) 
    db.session.commit() 

    return 'Saved ' + file.filename + 'to the database !' 

Hier meine db-Tabelle ist:

class IMAGES(db.Model): 
    ID = db.Column(db.Integer,primary_key=True) 
    NAME = db.Column(db.String(300),unique=True) 
    DATA = db.Column(db.BLOB) 
    USERNAME = db.Column(db.String(15)) 

Ich bin sicher, dass die Datei korrekt, weil Upload ist, wenn ich benutze:

@app.route('/download') 
def download(): 
    file_data = IMAGES.query.filter_by(USERNAME='test1').first() 

    return send_file(BytesIO(file_data.DATA), 
attachment_filename='test.jpg',as_attachment=True) 

Ich bekomme das Bild nicht beschädigt.

Wie ich versuche, die Datei zu machen:

@app.route('/image') 
def image(): 
    file_data = IMAGES.query.filter_by(USERNAME='test1').first() 
    image = b64encode(file_data.DATA) 
    return render_template('Image.html',data=list,image=image) 

und auf der Website:

<img src="data:;b64encode,{{ image }}"/> 

Antwort

0

Das <img> Daten URI sollte data:;base64,{{ image }} und nicht data:;b64encode,{{ image }} sein.

+0

Ich benutze 'img src =" Daten:; base64, {{Bild}} "/>' aber immer noch das gleiche. Ich habe das Bildobjekt inspiziert (Chrome F12) [link] (https://1drv.ms/f/s!AvdPsdAoxFQkg61laJUQcoeewnz8x6g) ich denke, das Problem ist in Transformation (BLOB -> Bild) –

+1

Ich habe gerade 'image = base64 verwendet .b64encode (file_data.DATA) .decode ('ascii') 'und es funktioniert :) –

Verwandte Themen