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

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应用中处理文件上传并设置文件大小限制了。