老规矩,贴一篇文章:flask 文件上传(单文件上传、多文件上传)
以下部分例子参考此文
1.单文件上传
我们可以在配置信息中设置限制文件大小
app.config['MAX_CONTENT_LENGTH'] = 1 * 1024 * 1024
当上传文件的大小超过这个限制后,flask内置的开服务器会中断连接,在生产环境的服务器上会返回413错误响应。
使用Flask-WTF
① 创建表单
from flask_wtf import FlaskForm
from flask_wtf.file import FileRequired, FileAllowed
from wtforms import SubmitField, FileField
class IconForm(FlaskForm):
icon = FileField('头像', validators=[FileRequired(message='请选择文件'), FileAllowed(['jpg','jpeg','png','gif'])])
submit = SubmitField('上传')
我们使用 Flask-wtf 提供的 FileField类实现文件上传
过滤器 FileRequired 检验文件是否存在,FileAllowed 设置允许上传的文件类型
② 视图函数
@main.route('/edit-icon', methods=['GET','POST'])
@login_required
def edit_icon():
form = IconForm()
if form.validate_on_submit():
f = form.icon.data
f.save(r'app/static/user_icon/'+ current_user.username + '.jpg')
current_user.icon = 'user_icon/' + current_user.username + '.jpg'
db.session.add(current_user)
d