您好,登錄后才能下訂單哦!
怎么在flask中使用flask-wtf驗證上傳文件?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
利用flask-wtf驗證上傳的文件
定義驗證表單類的時候,對文件類型的字段,需要采用FileField這個類型,即wtforms.FileField。
驗證器需要從flask_wtf.file中導入。flask_wtf.file.FileRequired和flask_wtf.file.FileAllowed
flask_wtf.file.FileRequired是用來驗證文件上傳不能為空。
flask_wtf.file.FileAllowed用來驗證上傳的文件的后綴名, 如常見圖片后綴.jpg和.png以及.gif等。
在視圖函數中,需要使用from werkzeug.datastructures import CombinedMultiDict來把request.form與request.files來進行合并。
最后使用 表單驗證對象.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)
關于怎么在flask中使用flask-wtf驗證上傳文件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。