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

wtforms.fieldsFileField()使用帮助:在Python中实现文件上传功能

发布时间:2024-01-13 11:17:30

wtforms是一个Python的表单库,可以用来快速构建HTML表单。其中的fields.FileField()是一个字段类,用于处理文件上传功能。

使用wtforms.fields.FileField()时,需要在视图函数中实例化一个wtforms.Form的子类,并将FileField作为其中一个字段。在模板中,可以使用render_kw参数来设置HTML元素的属性。

以下是一个使用wtforms.fields.FileField()实现文件上传功能的例子:

1. 创建一个名为forms.py的文件,用来定义表单类。

from wtforms import Form, FileField, SubmitField

class UploadForm(Form):
    file = FileField('选择文件')
    submit = SubmitField('上传')

2. 在视图函数中导入UploadForm类,并在GET请求时渲染上传表单,在POST请求时处理文件上传。

from flask import Flask, render_template, request
from forms import UploadForm

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

@app.route('/', methods=['GET', 'POST'])
def upload():
    form = UploadForm()

    if request.method == 'POST' and form.validate():
        file = form.file.data
        # 处理文件上传逻辑
        file.save('path/to/save/file')
        return '文件上传成功!'

    return render_template('upload.html', form=form)

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

3. 创建一个名为upload.html的模板文件,用来渲染上传表单。

<!DOCTYPE html>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
    <h1>文件上传</h1>
    <form method="POST" enctype="multipart/form-data">
        {{ form.file.label }} {{ form.file }}
        <br/>
        {{ form.submit }}
    </form>
</body>
</html>

在浏览器中访问http://localhost:5000/,即可看到一个文件上传表单。选择需要上传的文件,点击上传按钮后,文件将被保存到指定路径。