PythonFlask-WTF文件大小限制及处理步骤
发布时间:2023-12-11 06:17:50
在Python Flask中使用WTForms库可以轻松实现表单验证和文件上传功能。默认情况下,Flask-WTF没有对文件上传大小做限制。但是,你可以通过添加MAX_CONTENT_LENGTH配置来设置文件上传的最大大小限制。
以下是处理文件上传的步骤:
1. 引入必要的模块和类:
from flask import Flask, render_template, request from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileAllowed, FileRequired
2. 创建Flask应用程序和配置文件上传大小限制:
app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 限制文件大小为16MB
3. 创建一个表单类,使用FileField字段来处理文件上传,并添加验证条件:
class UploadForm(FlaskForm):
file = FileField('Upload File', validators=[
FileRequired(), # 文件必需存在
FileAllowed(['txt', 'pdf', 'jpg', 'png', 'gif']) # 允许上传的文件类型
])
4. 创建一个视图函数来处理文件上传和表单验证:
@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(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return 'File uploaded!'
return render_template('upload.html', form=form)
在这个例子中,validate_on_submit()用于判断表单是否被提交,并且通过验证。当表单被提交并且通过验证时,会保存文件到指定的文件夹中,并返回一个成功消息。
5. 创建一个HTML模板来展示文件上传表单:
<!DOCTYPE html>
<html>
<head>
<title>Upload File</title>
</head>
<body>
<h1>Upload File</h1>
<form method="POST" enctype="multipart/form-data">
{{ form.csrf_token }}
{{ form.file.label }}
{{ form.file }}
{{ form.file.errors }}
<input type="submit" value="Upload">
</form>
</body>
</html>
在这个模板中,enctype="multipart/form-data"用于指定表单支持文件上传。form.csrf_token用于生成防止跨站点请求伪造的令牌。
通过以上步骤,你就可以在Flask应用中处理文件上传并设置文件大小限制了。
