#python #html #database #flask #upload
#python #HTML #База данных #flask #загрузка
Вопрос:
Я новичок, и сейчас я создаю блог с помощью flask и html, но он может публиковать только заголовок и содержимое, но я хочу опубликовать инициализацию изображения, поэтому, если кто-нибудь знает, как опубликовать его (распечатать рисунок в приложении flask) и может хранить в файле db,не могли бы вы мне помочь? Потому что я застрял в этом так долго.
Ответ №1:
Если вы используете форму flask для загрузки файла, ее from flask_wtf.file import FileField
можно использовать в качестве поля формы для загрузки файлов.
class UploadImageForm(Form):
file = FileField(label='File Upload')
submit = SubmitField('Submit')
На стороне HTML вы захотите:
<form action="{{ url_for(your.route, **kwargs) }}" method="POST" enctype = "multipart/form-data">
{{ form.name_of_file_field }}
{{ form.submit }} <!-- Or an input tag -->
</form>
Тогда ваш маршрут, который будет вызываться при отправке формы, должен требовать метода POST. При разработке вы можете хранить свои файлы локально в статической папке, но я бы посоветовал хранить их в удаленном хранилище, прежде чем размещать приложение на сервере.
После того, как файл сохранен и загружен, затем в вашем html вы можете отобразить изображение с помощью:
<img class="image" src="{{ url_for('static', filename=image_file_path) }}">
где image_file_path — это путь к изображению. Этот путь должен быть сохранен как переменная среды. Имя файла изображения может храниться в вашей базе данных в одном из столбцов данных вашей модели в виде строки. Я предлагаю создать UUID в качестве имени файла изображения, чтобы вы не зависели от загрузки пользователя (т. Е. Если Имя файла на другом языке).
У Мигеля Гринберга есть отличный учебник по этому вопросу, в котором рассказывается обо всем этом и многом другом, включая работу с объектами изображений, проверку изображений и безопасность: https://blog.miguelgrinberg.com/post/handling-file-uploads-with-flask
Комментарии:
1. должен ли я добавить для этого маршрут?
2. Зависит от того, есть ли у вас существующий маршрут, который вы хотите использовать, и от структуры вашего приложения. Но да, вам понадобится маршрут для отправки формы, проверки объекта изображения и сохранения изображения и пути к файлу к изображению