@hardux2821

Flask вывод изображения из базы данных?

Проблема заключается в выводе фото на странице html(когда я открываю локал сервер flask, изображение выводится, но на странице html не выводится),
код с flask:
from flask import Flask, render_template, send_file
import sqlite3
import io

app = Flask(__name__)

# Функция для подключения к базе данных и получения изображения
def get_image_from_db():
    conn = sqlite3.connect('photos.db')
    cursor = conn.cursor()
    cursor.execute('SELECT photo FROM photos')
    photo_data = cursor.fetchone()
    conn.close()
    return photo_data[0] if photo_data else None

@app.route('/')
def index():
    # Получаем изображение из базы данных
    photo_data = get_image_from_db()
    return render_template('index.html', photo_data=photo_data)

@app.route('/photo')
def photo():
    # Получаем изображение из базы данных
    photo_data = get_image_from_db()
    if photo_data:
        # Отправляем изображение как файл
        return send_file(io.BytesIO(photo_data), mimetype='image/jpeg')
    else:
        return 'No photo available'

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

код html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Photo Viewer</title>
</head>
<body>
    <h1>Photo Viewer</h1>
    {% if encoded_image %}
        <img src="data:image/jpeg;base64,{{ encoded_image }}" alt="Photo">
    {% else %}
        <p>No photo available</p>
    {% endif %}
</body>
</html>
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
А зачем ты делаешь data:? Не проще сделать <img src="/photo" />?
Ну и да, ты говоришь, что у тебя есть переменная encoded_image - а где она? Ты не делаешь base64 кодирование, хотя и заявляешь, что делаешь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы