gpt4 book ai didi

python - 在我的表单中使用MultipleFileField()时,FileRequiredValidator()不起作用

转载 作者:行者123 更新时间:2023-12-03 17:01:48 26 4
gpt4 key购买 nike

我的UploadForm类:

    from app import app
from flask_wtf.file import FileRequired, FileAllowed
from wtforms.fields import MultipleFileField
from wtforms.validators import InputRequired,DataRequired
class UploadForm(FlaskForm):
.
.
.
roomImage = MultipleFileField('Room',validators=[FileAllowed(['jpg', 'png'], 'Image only!'), FileRequired('File was empty!')] )
.
.
.#there are other fields here which are not relevant to the problem at hand
HTML模板
{% extends "base.html" %}

{% block content %}
<h1>Upload Your Images</h1>
<form action="/" enctype="multipart/form-data" method="post" >
{{ form.csrf_token }}
Room<br />
{{form.roomImage()}}
.
.
. <MORE THINGS THAT I HAVE EDITED OUT>
{{form.submit()}}
<br/>
{% if form.errors %}
{{ form.errors }}
{% endif %}
</form>
{% endblock %}
hosts.py以运行检查以进行验证
def upload_image():#NEEDS HEAVY FIXING
"""home page to return the web page to upload documents"""
form = UploadForm()
if form.validate_on_submit():
使用VS的调试工具,我发现form.validate_on_submit()无法正常工作,并且始终无法通过验证,并且我在html页面上收到了此错误。

{'roomImage': ['File was empty!']}


还有另一个具有几乎完全相同的代码的MultipleFileField控件。
当我使用FileField上载一个文件时,不会发生此问题。关于此的文档非常有限,我只需要继续 this即可。我真的不知道如何解决这个问题。我已经广泛搜索以查找涉及MultipleFileField的示例,但它们没有使用任何验证。我在GitHub上找不到一个建议使用OptionalValidator的线程,但这对我来说不是一个选择,即使那也不起作用。
有人可以建议我解决方案吗?
编辑:
甚至FileAllowed()验证程序似乎也不起作用。

最佳答案

这对我有用(在GitHub上“在两线之间”找到):

multi_file = MultipleFileField("Upload File(s)", validators=[DataRequired()])

然而
FileAllowed(["xml", "jpg"])

被忽略,对我不起作用。

编辑:
不,可悲的是,它 不起作用 ...它为 form.validate()form.validate_on_submit()返回True,但是当您不传递任何文件时,通过删除
required=""


<input id="multi_file" multiple="" name="multi_file" required="" type="file">

并提交表格,它仍然将其评估为“真”。

因此问题根源仍然存在,如下所述。

关于python - 在我的表单中使用MultipleFileField()时,FileRequiredValidator()不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59734277/

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