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实现自动重启本程序的方法
Jul 09 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
python实现图书借阅系统
Feb 20 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
python实现梯度法 python最速下降法
Mar 24 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
Python如何实现机器人聊天
Sep 10 Python
上帝为你开了一扇窗之Tkinter常用函数详解
Jun 02 Python
Python实现照片卡通化
Dec 06 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创建动态图像
2006/10/09 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
javascript实现表单验证
2016/01/29 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
JS打印组合功能
2016/08/04 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
Python制作钉钉加密/解密工具
2016/12/07 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
卫校中专生个人自我评价
2013/09/19 职场文书
单位实习鉴定评语
2015/01/04 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
教研活动主持词
2015/07/03 职场文书
区域销售大会开幕词
2016/03/04 职场文书
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技