PythonFlask-WTF文件上传篇
文件上传是Web开发中常见的功能之一,Flask框架结合WTForms库可以很方便地实现文件上传功能。本文将介绍如何使用Flask-WTF库进行文件上传,并给出一个完整的使用例子。
首先,我们需要安装Flask-WTF库。可以使用pip进行安装:
pip install flask-wtf
接下来,我们需要创建一个Flask应用。
from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import SubmitField, FileField app = Flask(__name__) app.secret_key = 'SECRET_KEY'
在这个例子中,我们创建了一个Flask应用,并导入了必要的模块。
接下来,我们需要创建一个表单来处理文件上传。
class UploadForm(FlaskForm):
file = FileField('选择文件')
submit = SubmitField('上传')
在上面的代码中,我们创建了一个表单类UploadForm,其中包含一个文件字段file和一个提交按钮submit。
接下来,我们需要创建一个视图函数来处理文件上传。
@app.route('/', methods=['GET', 'POST'])
def index():
form = UploadForm()
if form.validate_on_submit():
file = request.files['file']
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return '文件上传成功!'
return render_template('index.html', form=form)
在这个视图函数中,我们首先创建了一个UploadForm实例,并通过form.validate_on_submit()判断表单是否被提交。如果表单被提交,我们可以通过request.files获取上传的文件,并使用secure_filename函数对文件名进行处理,然后保存文件到指定路径中。最后,我们返回一个成功提示信息。
最后,我们需要创建一个HTML模板来渲染表单。
<!doctype html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form method="POST" enctype="multipart/form-data">
{{ form.hidden_tag() }}
<div>
{{ form.file.label }}
{{ form.file() }}
</div>
<div>
{{ form.submit() }}
</div>
</form>
</body>
</html>
在上面的HTML模板中,我们使用form.file.label和form.file()分别渲染文件字段的标签和控件。form.hidden_tag()用于渲染隐藏字段,form.submit()用于渲染提交按钮。
最后,我们需要添加一个上传文件的文件夹配置项。
app.config['UPLOAD_FOLDER'] = 'uploads'
在上面的代码中,我们将上传的文件保存到uploads文件夹中。
现在,我们可以运行Flask应用,并在浏览器中访问http://localhost:5000 来进行文件上传。上传的文件将会保存在指定的文件夹中。
这就是使用Flask-WTF库进行文件上传的简单示例。通过结合Flask和WTForms,我们可以快速简单地实现文件上传功能。
