Flask WTForms MultipleFileField
Flask WTForms MultipleFileField
我正在尝试通过 WTForm 保存多个文件。由于没有关于如何使用 MultipleFileField 的文档,因此我查看了 SO 并遇到了多个答案。 一个看起来很有前途但行不通。 file
变量是一个字符串,因此代码不起作用。
class CreatePostForm(FlaskForm):
files = MultipleFileField('Upload files', validators={DataRequired()})
submit = SubmitField(_l('Submit'))
@app.route('/create_post', methods=['GET', 'POST'])
@login_required
def create_post():
form = CreatePostForm()
if form.validate_on_submit():
files_filenames = []
for file in form.files.data:
file_filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_filename))
files_filenames.append(file_filename)
return redirect(url_for('index'))
return render_template('create_post.html', form=form)
原来 MultipleFileField 没有将 enctype="multipart/form-data" 属性添加到 html 表单。您必须手动执行此操作才能使其正常工作。
所以上面的代码适用于这个 html 页面。
<form action="" method="post" class="form" role="form" enctype="multipart/form-data">
{{ wtf.quick_form(form) }}
</form>
我正在尝试通过 WTForm 保存多个文件。由于没有关于如何使用 MultipleFileField 的文档,因此我查看了 SO 并遇到了多个答案。 file
变量是一个字符串,因此代码不起作用。
class CreatePostForm(FlaskForm):
files = MultipleFileField('Upload files', validators={DataRequired()})
submit = SubmitField(_l('Submit'))
@app.route('/create_post', methods=['GET', 'POST'])
@login_required
def create_post():
form = CreatePostForm()
if form.validate_on_submit():
files_filenames = []
for file in form.files.data:
file_filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_filename))
files_filenames.append(file_filename)
return redirect(url_for('index'))
return render_template('create_post.html', form=form)
原来 MultipleFileField 没有将 enctype="multipart/form-data" 属性添加到 html 表单。您必须手动执行此操作才能使其正常工作。
所以上面的代码适用于这个 html 页面。
<form action="" method="post" class="form" role="form" enctype="multipart/form-data">
{{ wtf.quick_form(form) }}
</form>