我的表单中包含FileField
和其他字段:
from flask_wtf.file import FileField
class FooForm(Form):
file = FileField()
#...
我怎能"坚持"文件通过多个请求上传?例如,我将文件附加到文件上载字段并将一些文本写入另一个字段。单击“提交”后,文本无法验证,因此我再次显示表单以查看数据,但文件现已消失。如何改进表单以便用户不必再次上传文件?
答案 0 :(得分:1)
最简单的方法是在首次加载时存储文件,然后在ID之后通过ID引用它:
class FooForm(Form):
file = FileField()
file_id = HiddenField()
然后在你的处理程序中:
if form.file_id.data:
# remove any validators from form.file
form.file.validators = []
if form.validate():
possible_file_stream = request.files.get(form.file.name)
file_data = get_file(possible_file_stream, form.file_id.data)
# Do things with file data
return redirect('/somewhere/else')
elif form.file.data:
file_data = request.files[form.file.name]
form.file_id.data = save_file(file_data)
# Optionally, if the form should not display the file input
# once one has been uploaded
# del form.file
return render_template("form.html", form=form)