Как вставить изображение во Flask?

Как в Flask при помощи формы можно загрузить изображение в базу данных?
  • 28 июля 2024 г. 10:53
Ответы на вопрос 2
1. Для вставки изображения во Flask можно использовать следующий код:
```python
from flask import Flask, render_template

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run()
```
Здесь предполагается, что у вас уже есть HTML-страница (index.html), на которой вы хотите отображать изображение. Вам необходимо создать соответствующий HTML-шаблон и вставить изображение там.

2. Для загрузки изображения с помощью формы в Flask и сохранения его в базу данных можно использовать следующий код:
```python
from flask import Flask, render_template, request, redirect, url_for
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)
    data = db.Column(db.LargeBinary)

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

@app.route('/upload', methods=['POST'])
def upload_image():
    file = request.files['file']
    image = Image(data=file.read())
    db.session.add(image)
    db.session.commit()
    return redirect(url_for('home'))

if __name__ == '__main__':
    db.create_all()
    app.run()
```
Здесь мы создаем модель Image с полем данных (data) типа LargeBinary, которое будет хранить изображение в базе данных. В функции upload_image мы получаем файл из формы загрузки и сохраняем его в базе данных. Обратите внимание, что необходимо создать HTML-форму, чтобы пользователь мог загрузить изображение на странице index.html.

```html
<!DOCTYPE html>
<html>
<head>
    <title>Upload Image</title>
</head>
<body>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="Upload">
    </form>
</body>
</html>
```

После загрузки изображения оно будет сохранено в базе данных и доступно для дальнейшего использования.
Похожие вопросы