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>