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


Posted in Python onJanuary 17, 2020

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

  1. 定义验证表单类的时候,对文件类型的字段,需要采用FileField这个类型,即wtforms.FileField。
  2. 验证器需要从flask_wtf.file中导入。flask_wtf.file.FileRequired和flask_wtf.file.FileAllowed
  3. flask_wtf.file.FileRequired是用来验证文件上传不能为空。
  4. flask_wtf.file.FileAllowed用来验证上传的文件的后缀名, 如常见图片后缀.jpg和.png以及.gif等。
  5. 在视图函数中,需要使用from werkzeug.datastructures import CombinedMultiDict来把request.form与request.files来进行合并。
  6. 最后使用 表单验证对象.validate()进行验证。

upload.html文件:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>上传文件</title> 
</head> 
<body> 
 <form action="" method="post" enctype="multipart/form-data"> 
 <table> 
 <tr> 
 <td>头像:</td> 
 <td><input type="file" name="pichead"></td> 
 </tr> 
 <tr> 
 <td>描述:</td> 
 <td><input type="text" name="desc"></td> 
 </tr> 
 <tr> 
 <td></td> 
 <td><input type="submit" value="提交"></td> 
 </tr> 
 </table> 
 </form> 
</body> 
</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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
极简的Python入门指引
Apr 01 Python
Python中input与raw_input 之间的比较
Aug 20 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
python数据库编程 Mysql实现通讯录
Mar 27 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
python实时监控logstash日志代码
Apr 27 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
May 03 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
Python with标签使用方法解析
Jan 17 #Python
Python运行DLL文件的方法
Jan 17 #Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 #Python
python如何基于redis实现ip代理池
Jan 17 #Python
解决python gdal投影坐标系转换的问题
Jan 17 #Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 #Python
Python计算机视觉里的IOU计算实例
Jan 17 #Python
You might like
php Imagick获取图片RGB颜色值
2014/07/28 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
centos系统升级python 2.7.3
2014/07/03 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
python调用API实现智能回复机器人
2018/04/10 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
教师实习自我鉴定
2013/12/14 职场文书
爱情保证书范文
2014/02/01 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
男方婚礼答谢词
2015/01/20 职场文书
社会实践活动报告
2015/02/05 职场文书
教师节慰问信
2015/02/15 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
理解python中装饰器的作用
2021/07/21 Python
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android