flask利用flask-wtf驗(yàn)證上傳的文件的方法
利用flask-wtf驗(yàn)證上傳的文件
- 定義驗(yàn)證表單類的時(shí)候,對(duì)文件類型的字段,需要采用FileField這個(gè)類型,即wtforms.FileField。
- 驗(yàn)證器需要從flask_wtf.file中導(dǎo)入。flask_wtf.file.FileRequired和flask_wtf.file.FileAllowed
- flask_wtf.file.FileRequired是用來驗(yàn)證文件上傳不能為空。
- flask_wtf.file.FileAllowed用來驗(yàn)證上傳的文件的后綴名, 如常見圖片后綴.jpg和.png以及.gif等。
- 在視圖函數(shù)中,需要使用from werkzeug.datastructures import CombinedMultiDict來把request.form與request.files來進(jìn)行合并。
- 最后使用 表單驗(yàn)證對(duì)象.validate()進(jìn)行驗(yàn)證。
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啟動(dòng)文件:
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驗(yàn)證上傳的文件
@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)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- flask框架url與重定向操作實(shí)例詳解
- python flask中動(dòng)態(tài)URL規(guī)則詳解
- Flask框架URL管理操作示例【基于@app.route】
- 在flask中使用python-dotenv+flask-cli自定義命令(推薦)
- flask框架自定義過濾器示例【markdown文件讀取和展示功能】
- Flask和Django框架中自定義模型類的表名、父類相關(guān)問題分析
- flask框架藍(lán)圖和子域名配置詳解
- flask框架渲染Jinja模板與傳入模板變量操作詳解
- Python的Flask框架中@app.route的用法教程
- python使用Flask框架獲取用戶IP地址的方法
- flask框架自定義url轉(zhuǎn)換器操作詳解
相關(guān)文章
python3使用print打印帶顏色的字符串代碼實(shí)例
這篇文章主要介紹了python3使用print打印帶顏色的字符串代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
獲取python運(yùn)行輸出的數(shù)據(jù)并解析存為dataFrame實(shí)例
這篇文章主要介紹了獲取python運(yùn)行輸出的數(shù)據(jù)并解析存為dataFrame實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
python PyQt5/Pyside2 按鈕右擊菜單實(shí)例代碼
本文通過實(shí)例代碼給大家介紹了python PyQt5/Pyside2 按鈕右擊菜單,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-08-08
一篇文章徹底弄懂Python中的if?__name__?==?__main__
在Python當(dāng)中如果代碼寫得規(guī)范一些,通常會(huì)寫上一句if '__name__'=='__main__:'作為程序的入口,下面這篇文章主要給大家介紹了關(guān)于如何通過一篇文章徹底弄懂Python中的if?__name__?==?__main__的相關(guān)資料,需要的朋友可以參考下2022-12-12
python機(jī)器人運(yùn)動(dòng)范圍問題的解答
這篇文章主要為大家詳細(xì)解答了python機(jī)器人的運(yùn)動(dòng)范圍問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
學(xué)會(huì)這個(gè)炫酷圖表利器pyecharts,還怕不被公司重用?
前段時(shí)間,公司高層要看上半年度項(xiàng)目組業(yè)績(jī)數(shù)據(jù)分析,沒辦法,硬著頭皮也要上!說到數(shù)據(jù)分析,肯定離不開數(shù)據(jù)的可視化,畢竟圖表比冷冰冰的數(shù)字更加直觀,Boss只想一眼就能看出趨勢(shì)和結(jié)論.今天我們就聊一聊 pyecharts 中幾種常用的圖表, ,需要的朋友可以參考下2021-06-06
python控制臺(tái)實(shí)現(xiàn)tab補(bǔ)全和清屏的例子
今天小編就為大家分享一篇python控制臺(tái)實(shí)現(xiàn)tab補(bǔ)全和清屏的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
簡(jiǎn)單的連接MySQL與Python的Bottle框架的方法
這篇文章主要介紹了簡(jiǎn)單的連接MySQL與Python的Bottle框架的方法,主要基于mysql-connector插件,需要的朋友可以參考下2015-04-04
centos6.8安裝python3.7無法import _ssl的解決方法
這篇文章主要介紹了centos6.8安裝python3.7無法import _ssl的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09

