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调用新浪微博API项目实践
Jul 28 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
基于Python的关键字监控及告警
Jul 06 Python
一文总结学习Python的14张思维导图
Oct 17 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
利用python实现简单的邮件发送客户端示例
Dec 23 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
使用 Python 遍历目录树的方法
Feb 29 Python
Python Tornado批量上传图片并显示功能
Mar 26 Python
Python容器类型公共方法总结
Aug 19 Python
Python Pygame实现俄罗斯方块
Feb 19 Python
Python实现拼音转换
Jun 07 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
php session应用实例 登录验证
2009/03/16 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
2009/08/21 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python实现学校管理系统
2018/01/11 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
python序列化与数据持久化实例详解
2019/12/20 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
新东网科技Java笔试题
2012/07/13 面试题
网络方面基础面试题
2012/11/16 面试题
好家长事迹材料
2014/01/23 职场文书
初三政治教学反思
2014/01/30 职场文书
自荐信的格式
2014/03/10 职场文书
公司授权委托书
2014/04/04 职场文书
《大海那边》教学反思
2014/04/09 职场文书
2014年领班工作总结
2014/11/25 职场文书