一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

flask利用flask-wtf如何验证上传的文件 flask利用flask-wtf验证上传文件方法

时间:2020-01-17 编辑:袖梨 来源:一聚教程网

本篇文章小编给大家分享一下flask利用flask-wtf验证上传文件方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

利用flask-wtf验证上传的文件

定义验证表单类的时候,对文件类型的字段,需要采用FileField这个类型,即wtforms.FileField。

验证器需要从flask_wtf.file中导入。flask_wtf.file.FileRequired和flask_wtf.file.FileAllowed

flask_wtf.file.FileRequired是用来验证文件上传不能为空。

flask_wtf.file.FileAllowed用来验证上传的文件的后缀名, 如常见图片后缀.jpg和.png以及.gif等。

在视图函数中,需要使用from werkzeug.datastructures import CombinedMultiDict来把request.form与request.files来进行合并。

最后使用 表单验证对象.validate()进行验证。

upload.html文件:

 
 
 
 
上传文件 
 
 
 
头像:
描述:

formscheck.py文件:

from wtforms import Form,FileField,StringField 
from wtforms.validators import InputRequired
from flask_wtf.file import FileRequired,FileAllowed 

class UploadForm(Form): 
 pichead = FileField(validators=[FileRequired(),FileAllowed(['jpg','png','gif'])])
 desc = StringField(validators=[InputRequired()])

python启动文件:

from flask import Flask,request,render_template 
import os 
from werkzeug.utils import secure_filename 
from formscheck import UploadForm 
from werkzeug.datastructures import CombinedMultiDict 

app = Flask(__name__) 

UPLOAD_PATH = os.path.join(os.path.dirname(__file__),'images') 

#利用flask-wtf验证上传的文件 
@app.route('/upload/',methods=['GET','POST']) 
def upload(): 
 if request.method == 'GET': 
 return render_template('upload.html') 
 else: 
 form = UploadForm(CombinedMultiDict([request.form,request.files])) 
 if form.validate(): 
  # desc = request.form.get("desc") 
  # pichead = request.files.get("pichead") 
  desc = form.desc.data 
  pichead = form.pichead.data 
  filename = secure_filename(pichead.filename)
  pichead.save(os.path.join(UPLOAD_PATH,filename)) 
  print(desc) 
  return '文件上传成功' 
 else: 
  print(form.errors) 
  return "文件上传失败" 

if __name__ == '__main__': 
 app.run(debug=True)

热门栏目