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提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
Python函数式编程指南(一):函数式编程概述
Jun 24 Python
Python中常见的数据类型小结
Aug 29 Python
常见python正则用法的简单实例
Jun 21 Python
Python生成一个迭代器的实操方法
Jun 18 Python
Python 给定的经纬度标注在地图上的实现方法
Jul 05 Python
深入了解Django中间件及其方法
Jul 26 Python
python实现监控阿里云账户余额功能
Dec 16 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Django框架之路由用法
Jun 10 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中的HashTable结构详解
2013/06/13 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
MSN消息提示类
2006/09/05 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
Python切片索引用法示例
2018/05/15 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
Python实现对adb命令封装
2020/03/06 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
后勤工作职责
2013/12/22 职场文书
招聘与培训专员岗位职责
2014/01/30 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python