欢迎访问宙启技术站
智能推送

使用wtforms.fieldsFileField()实现文件上传的Python代码示例

发布时间:2024-01-13 11:15:43

wtforms.fields.FileField是WTForms库中的一个类,用于创建文件上传字段。它允许用户选择并上传一个文件。

下面是一个使用wtforms.fields.FileField的示例代码:

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from wtforms.fields import FileField

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your secret key'

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    file = FileField('File', validators=[DataRequired()])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    form = MyForm()
    if form.validate_on_submit():
        name = form.name.data
        file = form.file.data
        # 处理文件上传逻辑
        file.save('uploads/' + file.filename)
        return 'File uploaded successfully!'
    return render_template('upload.html', form=form)

if __name__ == '__main__':
    app.run()

在这个示例中,我们使用Flask框架和WTForms库创建了一个简单的文件上传表单。在表单中,我们使用了wtforms.fields.FileField来创建一个文件上传字段,名称为'File'。我们还使用wtforms.fields.StringField创建了一个文本输入字段,名称为'Name'。然后,我们使用wtforms.validators.DataRequired验证字段的数据是否为空。

在服务器上,上传的文件将通过file.save()方法保存到指定的目录下。在这个例子中,我们将文件保存在'uploads/'文件夹下。你可以根据自己的需求修改保存的目录。

最后,我们使用Flask的render_template()函数来渲染表单模板,然后在浏览器中呈现该表单。

以下是一个简单的HTML模板(upload.html)的示例代码:

<!DOCTYPE html>
<html>
    <body>
        <form method="POST" enctype="multipart/form-data" action="/">
            {{ form.csrf_token }}
            {{ form.name.label }} {{ form.name }}
            {{ form.file.label }} {{ form.file }}
            {{ form.submit }}
        </form>
    </body>
</html>

该模板定义了一个简单的表单,它的enctype属性设置为"multipart/form-data"以支持文件上传。我们使用WTForms模板语言在模板中呈现表单字段。

通过上述示例代码,你可以创建一个简单的文件上传表单,以及处理上传文件的逻辑。你可以根据自己的需求自定义表单字段和逻辑。