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

在Flask中使用FileField()上传文件并设置文件大小限制

发布时间:2024-01-17 12:08:52

在Flask中使用FileField()上传文件并设置文件大小限制的步骤如下:

1. 导入所需的模块:

from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed, FileRequired
from werkzeug.utils import secure_filename

2. 创建一个Flask表单类,继承自FlaskForm,并定义一个FileField字段:

class MyForm(FlaskForm):
    file = FileField('Upload File', validators=[FileRequired(), FileAllowed(['txt', 'pdf'], 'Only .txt and .pdf files are allowed.')])

在上述代码中,FileAllowed()函数用于指定允许上传的文件类型,只接受txtpdf类型的文件,第二个参数用于自定义错误消息。

3. 在路由函数中处理表单提交:

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    form = MyForm()
    if form.validate_on_submit():
        file = form.file.data
        filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        flash('File uploaded successfully.')
        return redirect(url_for('index'))
    return render_template('upload.html', form=form)

上述代码中,form.validate_on_submit()用于判断是否是有效的POST请求。如果是的话,将会保存上传的文件到指定的文件夹中。

4. 创建一个HTML模板用于显示文件上传表单:

{% extends 'base.html' %}

{% block content %}
  <h2>Upload File</h2>
  <form method="POST" enctype="multipart/form-data">
    {{ form.csrf_token }}
    {{ form.file.label }} {{ form.file() }}
    {{ form.file.errors }}
    <br>
    <input type="submit" value="Upload">
  </form>
{% endblock %}

在上述代码中,enctype="multipart/form-data"用于指定表单编码类型,form.file.label用于显示字段的标签,form.file()用于渲染文件上传按钮,form.file.errors用于显示验证错误信息。

这就是在Flask中使用FileField()上传文件并设置文件大小限制的基本步骤。你可以根据自己的需求进行调整和扩展。