Загрузить JPG с помощью flask и html

#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. Зависит от того, есть ли у вас существующий маршрут, который вы хотите использовать, и от структуры вашего приложения. Но да, вам понадобится маршрут для отправки формы, проверки объекта изображения и сохранения изображения и пути к файлу к изображению