flashkはflashk-wtfを利用してアップロードされたファイルを検証する方法です。


flashk-wtfを利用してアップロードしたファイルを検証します。
  • 認証フォームクラスを定義する場合、ファイルタイプのフィールドには、FileFieldというタイプ、すなわちwtforms.FileFieldが必要です。
  • ベリファイアはflashkから必要です。wtf.fileで導入します。flash_wtf.file.Filerequiredとflashk_wtf.file.FileAllowed
  • flashk_wtf.file.FileRequiredはファイルのアップロードが空ではないことを検証するために使用されます。
  • flashk_wtf.file.FileAllowedは、一般的なピクチャのサフィックス.jpgおよび.pngおよび.gifなどのアップロードされたファイルのサフィックス名を検証するために使用される。
  • は、ビュー関数において、from werkzug.datastructures import CobinedMultiDictを用いてrequest.formとrequest.filesを統合する必要がある。
  • は最終的にフォーム検証対象.validate()を用いて検証を行う。
  • ファイル:
    
    <!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)
    
    
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。