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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
在python的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 Python
为Python的web框架编写前端模版的教程
Apr 30 Python
python自动裁剪图像代码分享
Nov 25 Python
Python的argparse库使用详解
Oct 09 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
python excel转换csv代码实例
Aug 26 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
Python爬虫之Selenium实现窗口截图
Dec 04 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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
15种PHP Encoder的比较
2007/04/17 PHP
php5.3 废弃函数小结
2010/05/16 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
webpack入门必知必会
2017/01/16 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
SVG描边动画
2017/02/23 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python3实现生成随机密码的方法
2014/08/23 Python
python实现抖音视频批量下载
2018/06/20 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
Python如何生成xml文件
2020/06/04 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
2014端午节活动策划方案
2014/01/27 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2014年电教工作总结
2014/12/19 职场文书
2016春节放假通知范文
2015/08/18 职场文书
导游词之青城山景区
2019/09/27 职场文书
python神经网络ResNet50模型
2022/05/06 Python