在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()函数用于指定允许上传的文件类型,只接受txt和pdf类型的文件,第二个参数用于自定义错误消息。
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()上传文件并设置文件大小限制的基本步骤。你可以根据自己的需求进行调整和扩展。
