gpt4 book ai didi

python - 多文件字段 wtforms

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:57 26 4
gpt4 key购买 nike

class AddProductForm(FlaskForm):
product_pictures = MultipleFileField('Pictures')
submit = SubmitField('Add Pictures')

def product_add_pics():
form = AddProductForm()
if form.validate_on_submit():
if form.product_pictures.data:
for picture_upload in form.product_pictures.data:
print(type(picture_upload))

形式:

<div class="form-group">
{{ form.product_pictures.label() }}
{{ form.product_pictures(class="form-control-file") }}
{% if form.product_pictures.errors %}
{% for error in form.product_pictures.errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %}
{% endif %}
</div>

我总是得到字符串类型。我怎样才能得到二进制文件?我使用 wtforms 中的 MultipleFileField。

最佳答案

documentation对于 FileField 类,具体说明了以下有关处理文件内容的内容:

By default, the value will be the filename sent in the form data.WTForms does not deal with frameworks’ file handling capabilities.

这同样适用于 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 可以检索最终用户从他们的机器上选择的所有文件。

最后,要获取每个文件中包含的字节,您需要获取每个文件的读取。这应该会产生您要查找的字节。

我希望这证明是有用的。

关于python - 多文件字段 wtforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53021662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com