我的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':['文件为空!']}
[还有另一个MultipleFileField控件,其代码几乎完全相同。当我使用FileField上载一个文件时,不会发生此问题。关于此的文档非常有限,我只需要继续输入this。我真的不知道如何解决这个问题。我已经广泛搜索以查找涉及MultipleFileField的示例,但它们没有使用任何验证。我在GitHub上找不到一个建议使用OptionalValidator的线程,但这对我来说不是一个选择,即使那也不起作用。有人可以建议我解决方案吗?
即使FileAllowed()验证程序似乎也不起作用。
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
$( "#myform" ).validate({
rules: {
":file": {
required: true,
accept: "image/*"
}
}
});
和
<form id="myform">
<label for="field">Required, image files only: </label>
<input type="file" class="left" id="field" name="field" multiple>
<br/>
<input type="submit" value="Validate!">
</form>
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/additional-methods.min.js"></script>