當前位置 主頁 > 服務器問題 > Linux/apache問題 > 最大化 縮小

    flask利用flask-wtf驗證上傳的文件的方法

    欄目:Linux/apache問題 時間:2020-01-19 00:13

    利用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)
    
    

    以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持IIS7站長之家。

    下一篇:沒有了
777亚洲人成视频免费视频