Как я могу отображать изображения из базы данных с использованием Flask?

Как можно исправить ошибку и отобразить фотографию на HTML-странице, используя локальный сервер Flask и базу данных?
  • 30 апреля 2024 г. 17:20
Ответы на вопрос 2
Для отображения изображений из базы данных с использованием Flask, вам необходимо сначала сохранить изображение в базе данных и затем получить его из базы данных при загрузке страницы.

Ниже приведен пример кода, который позволяет сохранить изображение в базе данных и отобразить его на HTML-странице с использованием Flask:

```python
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///images.db'
db = SQLAlchemy(app)

class Image(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    image = db.Column(db.LargeBinary)

@app.route('/')
def index():
    image = Image.query.first()
    return render_template('index.html', image=image)

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

```

HTML-шаблон (index.html) может выглядеть следующим образом:

```html
<!DOCTYPE html>
<html>
<head>
    <title>Image Viewer</title>
</head>
<body>
    <img src="data:image/jpeg;base64,{{image.image}}" alt="Image">
</body>
</html>
```

При использовании данного подхода, вы должны убедиться, что изображения сохраняются в базе данных в формате, который может быть преобразован в строку и отображен на HTML-странице. В данном примере мы храним изображения в формате LargeBinary, что позволяет перевести его в base64 и отобразить на странице.

Если вы получаете ошибку при попытке отобразить изображение, убедитесь, что код для сохранения изображения в базу данных и отправки его на страницу корректно работает. Проверьте, что путь к изображению указан правильно и что изображение сохраняется в базу данных без ошибок. Возможно, вам также потребуется дополнительно обработать изображение (например, изменить его размер или формат) перед сохранением и отображением на странице.
А зачем ты делаешь data:? Не проще сделать <img src="/photo" /> ? 
Ну и да, ты говоришь, что у тебя есть переменная encoded_image - а где она? Ты не делаешь base64 кодирование, хотя и заявляешь, что делаешь.
Похожие вопросы