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

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

发布时间:2024-01-13 11:18:36

wtforms.fields.FileField()是WTForms库中的一个表单字段类,用于实现文件上传的功能。该字段类可以用于接收和验证用户上传的文件。

以下是一个使用wtforms.fields.FileField()实现文件上传的Python示例代码:

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import SubmitField
from wtforms.fields.html5 import FileField
from werkzeug.utils import secure_filename

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

class UploadForm(FlaskForm):
    file = FileField('Choose a file')
    submit = SubmitField('Upload')

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    form = UploadForm()
    
    if form.validate_on_submit():
        file = form.file.data
        filename = secure_filename(file.filename)
        file.save(f'uploads/{filename}')
        return 'File uploaded successfully!'
    
    return render_template('index.html', form=form)

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

在上面的示例代码中,我们创建了一个Flask应用,并使用Flask-WTF库来处理表单。我们定义了一个名为UploadForm的表单类,其中包含一个FileField字段和一个SubmitField字段。

在表单验证通过后,我们获取用户上传的文件数据,使用secure_filename()函数来确保文件名的安全性,然后将文件保存到指定的目录中。

在上传文件之前,我们需要在Flask应用的项目目录下创建一个名为"uploads"的文件夹,用于存储上传的文件。我们还通过设置SECRET_KEY来保护表单。

最后,我们将表单渲染到名为index.html的模板中,用户可以选择文件并点击“Upload”按钮来上传文件。

使用示例:

1. 启动应用,并访问http://localhost:5000/。

2. 选择一个文件,并点击“Upload”按钮。

3. 文件将被上传到项目目录下的"uploads"文件夹中,并返回“File uploaded successfully!”的提示信息。

以上示例代码演示了如何使用wtforms.fields.FileField()创建一个文件上传的表单,并保存用户上传的文件。你可以根据实际需求对代码进行修改和扩展。