Поле формы MultipleFileField
Поле MultipleFileField применяется для загрузки нескольких файлов
в одном поле формы. Оно принимает список файлов из запроса и
сохраняет их в атрибуте data. Первым параметром передаётся
подпись поля, которая отображается рядом с элементом формы.
Синтаксис
from wtforms import MultipleFileField
field = MultipleFileField(label, [validators])
Пример
Давайте создадим форму с полем MultipleFileField
для загрузки нескольких файлов:
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import MultipleFileField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class UploadForm(FlaskForm):
files = MultipleFileField('Files')
submit = SubmitField('Upload')
@app.route('/', methods=['GET', 'POST'])
def index():
form = UploadForm()
res = None
if form.validate_on_submit():
res = [f.filename for f in form.files.data]
return render_template('index.html', form=form, res=res)
Теперь создадим шаблон для отображения формы:
<+jinja+>
{% if res %}
{{ res }}
{% endif %} <-jinja+>Пример
Давайте добавим валидатор FileAllowed для проверки
расширений загружаемых файлов:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import MultipleFileField, SubmitField
from wtforms.validators import FileAllowed
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class UploadForm(FlaskForm):
files = MultipleFileField(
'Files',
validators=[FileAllowed(['txt', 'pdf'], 'Only txt and pdf!')]
)
submit = SubmitField('Upload')
@app.route('/', methods=['GET', 'POST'])
def index():
form = UploadForm()
res = None
if form.validate_on_submit():
res = [f.filename for f in form.files.data]
return render_template('index.html', form=form, res=res)
Результат выполнения кода после загрузки файлов
article.txt и user.pdf:
['article.txt', 'user.pdf']
Смотрите также
-
поле
FileField,
которое загружает один файл -
валидатор
FileAllowed,
который проверяет расширение файла -
валидатор
FileRequired,
который проверяет наличие файла -
валидатор
FileSize,
который проверяет размер файла