使用wtforms.fieldsFileField()实现文件上传功能的Python代码示例
文件上传是一种常见的功能,在Python中可以使用wtforms.fields.FileField()字段来实现。以下是一个示例代码,演示如何使用FileField()来实现文件上传功能。
首先,我们需要导入相应的库和模块:
from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import FileField
接下来,创建一个简单的Flask应用程序,并配置表单类,其中包含一个FileField()字段:
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
class UploadForm(FlaskForm):
file = FileField('Upload File')
在上述代码中,使用FileField()创建了一个名为file的字段,并在表单上显示一个标签为"Upload File"的文本框。
然后,我们定义两个路由函数,一个用于显示表单页面,另一个用于处理文件上传的POST请求:
@app.route('/', methods=['GET', 'POST'])
def upload_file():
form = UploadForm()
if request.method == 'POST' and form.validate_on_submit():
f = form.file.data
f.save('uploads/' + f.filename)
return render_template('upload.html', form=form)
在上述代码中,我们首先创建了一个表单实例form。然后,使用request.method来检查请求的方法是否为POST,并使用form.validate_on_submit()来验证表单数据。如果表单验证通过,我们可以通过form.file.data来获取文件对象,并使用save()方法将文件保存到指定的目录中。
最后,我们在render_template()函数中将表单实例传递给模板,以在页面中显示表单。
接下来,创建一个简单的HTML模板upload.html,用于显示表单和接收文件的上传请求:
<!DOCTYPE html>
<html>
<head>
<title>File Upload Example</title>
</head>
<body>
<h1>File Upload Example</h1>
<form method="POST" enctype="multipart/form-data">
{{ form.csrf_token }}
{{ form.file.label }}<br>
{{ form.file }}<br>
<input type="submit" value="Upload">
</form>
</body>
</html>
在上述代码中,我们使用{{ form.csrf_token }}来生成CSRF令牌,以防止跨站请求伪造(CSRF)攻击。然后,使用{{ form.file.label }}和{{ form.file }}来显示字段的标签和输入框。
最后,在表单中添加一个提交按钮,以触发文件上传的POST请求。
以上就是使用wtforms.fields.FileField()实现文件上传功能的示例代码。运行应用程序后,您应该能够通过访问http://localhost:5000/来上传文件。上传的文件将被保存到uploads/目录中。
请注意,此示例仅演示了基本的文件上传功能,您可以根据需要进行修改和扩展。例如,您可以添加其他验证规则、设置文件保存的路径、限制允许上传的文件类型等。
