РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
311 of 643 menu

Правило FileSize

Правило FileSize применяется к полям формы Flask-WTF, которые принимают файлы. Оно проверяет размер загруженного файла и добавляет ошибку валидации, если размер не входит в допустимый диапазон. Первым параметром передаётся минимальный размер в байтах, вторым - максимальный размер. Оба параметра необязательные: можно указать только нижнюю или только верхнюю границу.

Синтаксис

from wtforms.validators import FileSize FileSize(min_size, max_size)

Параметр min_size задаёт минимальный размер файла в байтах, а max_size - максимальный. Если файл меньше min_size или больше max_size, валидация завершится ошибкой.

Пример

Давайте создадим форму с полем для файла и ограничим размер файла диапазоном от 100 до 5000 байт:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import FileField, SubmitField from wtforms.validators import FileSize app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class UploadForm(FlaskForm): file = FileField('file', validators=[FileSize(min=100, max=5000)]) submit = SubmitField('send') @app.route('/', methods=['GET', 'POST']) def index(): form = UploadForm() res = '' if form.validate_on_submit(): res = 'file accepted' else: res = str(form.file.errors) return render_template('index.html', form=form, res=res)

Шаблон для вывода формы и результата:

<+jinja+>
{{ form.hidden_tag() }} {{ form.file() }} {{ form.submit() }}

{{ res }}

<-jinja+>

Если загрузить файл размером 2000 байт, результат выполнения кода будет таким:

"file accepted"

Если загрузить файл размером 50 байт, результат выполнения кода будет таким:

"['file is too small']"

Пример

Давайте ограничим только максимальный размер файла и не будем задавать минимальный:

from flask import Flask, render_template from flask_wtf import FlaskForm from wtforms import FileField, SubmitField from wtforms.validators import FileSize app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' class UploadForm(FlaskForm): file = FileField('file', validators=[FileSize(max=1000)]) submit = SubmitField('send') @app.route('/', methods=['GET', 'POST']) def index(): form = UploadForm() res = '' if form.validate_on_submit(): res = 'file accepted' else: res = str(form.file.errors) return render_template('index.html', form=form, res=res)

Если загрузить файл размером 5000 байт, результат выполнения кода будет таким:

"['file is too large']"

Смотрите также

  • правило FileRequired,
    которое проверяет наличие файла в поле
  • правило FileAllowed,
    которое проверяет расширение загружаемого файла
  • поле FileField,
    которое принимает один файл от пользователя
  • поле MultipleFileField,
    которое принимает несколько файлов сразу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить