Python 提交文件字段后,文件始终为空
我有一个表单,我需要收集一些文本数据和一个文件。提交后,文本字段很好,但文件字段似乎是空的 validator FileRequired声明该字段为空,如果我删除它,它实际上是非类型的 表格类别:Python 提交文件字段后,文件始终为空,python,flask,flask-wtforms,filefield,Python,Flask,Flask Wtforms,Filefield,我有一个表单,我需要收集一些文本数据和一个文件。提交后,文本字段很好,但文件字段似乎是空的 validator FileRequired声明该字段为空,如果我删除它,它实际上是非类型的 表格类别: 从wtforms导入表单、StringField、validators、SubmitField、DateField 从wtforms.fields.html5导入日期字段 从flask_wtf.file导入文件字段,需要文件,允许文件 来自flask_wtf进口FlaskForm 从烧瓶进口闪蒸 导入
从wtforms导入表单、StringField、validators、SubmitField、DateField
从wtforms.fields.html5导入日期字段
从flask_wtf.file导入文件字段,需要文件,允许文件
来自flask_wtf进口FlaskForm
从烧瓶进口闪蒸
导入baseDatos
等级AnadirForm(瓶形):
id=StringField('id')
nombre=StringField('nombre',[validators.InputRequired()
volumen=StringField('volumen',[validators.InputRequired()]))
fecha=DateField('fecha',[validators.InputRequired()]))
file=FileField('incroduct Gcode',validators=[FileRequired()])
submit=SubmitField('Post'))
渲染类:
@app.route(“/”,方法=['GET','POST'])
def main():
primeraForm=AnadirForm(request.form)
如果(primeraForm.validate_on_submit()):
打印(primeraForm.file.data)
HTML:
{{form.hidden_tag()}}
{{form.id(class=“form control”,placeholder=“id”)}
{{form.hidden_tag()}}
{{form.nombre(class=“form control”,placeholder=“nombre”)}
{{form.hidden_tag()}}
{{form.volumen(class=“form control”,placeholder=“volumen”)}
{{form.hidden_tag()}}
{{form.fecha(class=“form control”,placeholder=“fecha”)}
{{form.hidden_tag()}}
{{form.file(placeholder=“file”)}
{{form.submit(class=“btn btn primary”)}
我无法访问文件数据(稍后我必须存储这些数据,但在我成功获取文件后)请尝试:
form=AnadirForm(request.POST或None,request.FILES或None)
或:
if request.method==“POST”:
file=request.files['file\u name']
试试:
form=AnadirForm(request.POST或None,request.FILES或None)
或:
if request.method==“POST”:
file=request.files['file\u name']
我也有同样的问题。对我有效的方法是将FileField()
替换为multiplefield()
,然后调整数据处理,因为您得到的是一个文件列表,而不仅仅是一个文件
我不知道这个错误是从哪里来的,这对我来说似乎很奇怪,因为FileField在另一个案例中为我工作,尽管没有真正的区别。我也有同样的问题。对我有效的方法是将
FileField()
替换为multiplefield()
,然后调整数据处理,因为您得到的是一个文件列表,而不仅仅是一个文件
我不知道这个错误是从哪里来的,这对我来说似乎很奇怪,因为FileField在另一个案例中为我工作,尽管没有真正的区别。请尝试一下以下代码:
<form method="POST" action="" enctype="multipart/form-data">
{{form.hidden_tag()}}
<fieldset class="form-group">
<div class="hueco col-xs-7">
{{form.id(class="form-control",placeholder="Id")}}
</div>
<div class="hueco col-xs-7">
{{form.nombre(class="form-control",placeholder="Nombre")}}
</div>
<div class="hueco col-xs-7">
{{form.volumen(class="form-control",placeholder="Volumen")}}
</div>
<div class="hueco col-xs-7">
{{form.fecha(class="form-control",placeholder="Fecha")}}
</div>
<div>
{{form.file(placeholder="File")}}
</div>
</fieldset>
<div class="form-group">
{{ form.submit(class="btn btn-primary") }}
</div>
</form>
{{form.hidden_tag()}}
{{form.id(class=“form control”,placeholder=“id”)}
{{form.nombre(class=“form control”,placeholder=“nombre”)}
{{form.volumen(class=“form control”,placeholder=“volumen”)}
{{form.fecha(class=“form control”,placeholder=“fecha”)}
{{form.file(placeholder=“file”)}
{{form.submit(class=“btn btn primary”)}
请尝试此代码一次:
<form method="POST" action="" enctype="multipart/form-data">
{{form.hidden_tag()}}
<fieldset class="form-group">
<div class="hueco col-xs-7">
{{form.id(class="form-control",placeholder="Id")}}
</div>
<div class="hueco col-xs-7">
{{form.nombre(class="form-control",placeholder="Nombre")}}
</div>
<div class="hueco col-xs-7">
{{form.volumen(class="form-control",placeholder="Volumen")}}
</div>
<div class="hueco col-xs-7">
{{form.fecha(class="form-control",placeholder="Fecha")}}
</div>
<div>
{{form.file(placeholder="File")}}
</div>
</fieldset>
<div class="form-group">
{{ form.submit(class="btn btn-primary") }}
</div>
</form>
{{form.hidden_tag()}}
{{form.id(class=“form control”,placeholder=“id”)}
{{form.nombre(class=“form control”,placeholder=“nombre”)}
{{form.volumen(class=“form control”,placeholder=“volumen”)}
{{form.fecha(class=“form control”,placeholder=“fecha”)}
{{form.file(placeholder=“file”)}
{{form.submit(class=“btn btn primary”)}