Flask 从WTForms字段中获取上传的文件

Flask 从WTForms字段中获取上传的文件

在本文中,我们将介绍如何使用Flask框架从WTForms字段中获取上传的文件。Flask是一个轻量级的Python web框架,而WTForms是一个用于构建web表单的扩展库。

阅读更多:Flask 教程

1. 安装Flask和WTForms

要开始使用Flask和WTForms,首先需要安装它们。可以使用pip命令来安装这两个库:

pip install flask wtforms

2. 创建Flask应用

在代码中引入Flask和WTForms库,并创建一个Flask应用:

from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import FileField, SubmitField

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

这里我们导入了Flask类、render_template函数、request对象、FlaskForm类、FileField类和SubmitField类。并创建了一个名为app的Flask应用实例,设置了一个密钥供后续表单使用。

3. 创建表单

使用WTForms创建一个表单类,包含一个FileField字段用于上传文件和一个SubmitField字段用于提交表单。在表单类中还可以定义其他的字段,这里我们只关注上传文件的字段。

class UploadForm(FlaskForm):
    file = FileField('上传文件')
    submit = SubmitField('提交')

这个表单类继承自FlaskForm,并定义了一个名为fileFileField字段和一个名为submitSubmitField字段。

4. 创建视图函数

在Flask应用中定义一个路由和对应的视图函数,用于处理用户的请求和返回相应的结果。

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    form = UploadForm()
    if form.validate_on_submit():
        file = form.file.data
        file.save('./uploads/' + file.filename)
        return f'文件 \"{file.filename}\" 上传成功!'

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

在视图函数upload_file中,我们首先实例化了之前定义的表单类UploadForm,然后通过调用validate_on_submit()方法来判断表单是否被提交。如果表单通过验证,我们可以通过访问form.file.data属性来获取上传的文件对象,并使用save()方法将文件保存到指定路径。最后返回一个上传成功的提示。

5. 创建HTML模板

为了展示表单,我们需要创建一个HTML模板文件。在templates文件夹下创建名为index.html的文件,并添加以下内容:

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

在这个模板中,我们创建了一个简单的表单,使用POST方法提交数据,并设置enctype属性为multipart/form-data以支持文件上传。使用{{ form.hidden_tag() }}渲染一个隐藏的CSRF令牌,这是为了增加表单的安全性。通过{{ form.file.label }}{{ form.file }}渲染表单的文件上传字段和提交按钮。

6. 运行应用

设置好Flask应用、表单类和HTML模板后,就可以运行应用并在浏览器中访问。可以使用以下命令启动应用:

python app.py

7. 测试文件上传功能

当应用运行后,在浏览器中输入http://localhost:5000/来访问应用。在表单输入框中选择一个文件,并点击提交按钮。如果文件上传成功,将会显示类似以下内容的提示:

文件 "example.txt" 上传成功!

上传的文件将会保存在项目根目录下的uploads文件夹中。

总结

通过使用Flask和WTForms,我们可以轻松地实现文件上传的功能。在本文中,我们介绍了如何使用Flask从WTForms字段中获取上传的文件,并提供了一个完整的示例代码。希望这篇文章能够帮助你理解并应用Flask和WTForms的文件上传功能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程