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 dict remove数组删除(del,pop)
Mar 24 Python
Python实现全角半角转换的方法
Aug 18 Python
python使用pil生成缩略图的方法
Mar 26 Python
Python中文字符串截取问题
Jun 15 Python
Python 通配符删除文件的实例
Apr 24 Python
Python使用random.shuffle()打乱列表顺序的方法
Nov 08 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
python中if和elif的区别介绍
Nov 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
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
php实现单链表的实例代码
2013/03/22 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
linux中cd命令使用详解
2015/01/08 PHP
javascript &amp;&amp;和||运算法的另类使用技巧
2009/11/28 Javascript
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
2010/03/01 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
将Python代码打包为jar软件的简单方法
2015/08/04 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
Python插件机制实现详解
2020/05/04 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
电子商务毕业生求职信
2013/11/10 职场文书
如何写你的创业计划书
2014/01/07 职场文书
网络工程师职业规划
2014/02/10 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书