Документация для класса FileField
специально говорит об обработке содержимого файла:
По умолчанию значением будет имя файла, отправляемое в данных формы.
WTForms не имеет отношения к возможностям обработки файлов в рамках.
То же самое относится и к классу MultipleFileField
.
Это означает, что вам нужно будет запросить flask
для этих файлов. И самый быстрый способ сделать это - использовать request.files
для запроса, который вы обрабатываете.
В итоге вам потребуется переписать вашу функцию product_add_pics
, чтобы получить файлы из объекта request
, следующим образом:
from flask import request
def product_add_pics():
form = AddProductForm()
if form.validate_on_submit():
pics = request.files.getlist(form.product_pictures.name)
if pics:
for picture_upload in pics:
picture_contents = picture_upload.stream.read()
print(type(picture_contents))
# Do everything else you wish to do with the contents
Вы заметите использование request.files.getlist
здесь. Это важно, поскольку вы используете класс MultipleFielField
для приема нескольких файлов. Использование .getlist
позволяет получить все файлы, выбранные конечным пользователем на их компьютере.
И, наконец, чтобы получить байты, содержащиеся в каждом файле, вам нужно получить stream
каждого файла и read
его. Это должно привести к байтам, которые вы ищете.
Надеюсь, это окажется полезным.