如何使用flask-wtf在flask中验证上传的文件?

2026-06-09 21:196阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计616个文字,预计阅读时间需要3分钟。

如何使用flask-wtf在flask中验证上传的文件?

使用 Flask-WTF 验证上传的文件,并定义验证表单类时,需要指定文件类型的字段,可以使用 wtforms.FileField 类型。验证器需要从 flask_wtf.file 中导入。以下是简化后的代码示例:

pythonfrom flask import Flaskfrom flask_wtf import FlaskFormfrom wtforms import FileFieldfrom wtforms.validators import InputRequiredfrom flask_wtf.file import FileRequired

如何使用flask-wtf在flask中验证上传的文件?

app=Flask(__name__)

class UploadFileForm(FlaskForm): file=FileField('Upload File', validators=[FileRequired()])

@app.route('/upload', methods=['GET', 'POST'])def upload_file(): form=UploadFileForm() if form.validate_on_submit(): file=form.file.data # 处理文件 return render_template('upload.', form=form)

if __name__=='__main__': app.run(debug=True)

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

标签:文件

本文共计616个文字,预计阅读时间需要3分钟。

如何使用flask-wtf在flask中验证上传的文件?

使用 Flask-WTF 验证上传的文件,并定义验证表单类时,需要指定文件类型的字段,可以使用 wtforms.FileField 类型。验证器需要从 flask_wtf.file 中导入。以下是简化后的代码示例:

pythonfrom flask import Flaskfrom flask_wtf import FlaskFormfrom wtforms import FileFieldfrom wtforms.validators import InputRequiredfrom flask_wtf.file import FileRequired

如何使用flask-wtf在flask中验证上传的文件?

app=Flask(__name__)

class UploadFileForm(FlaskForm): file=FileField('Upload File', validators=[FileRequired()])

@app.route('/upload', methods=['GET', 'POST'])def upload_file(): form=UploadFileForm() if form.validate_on_submit(): file=form.file.data # 处理文件 return render_template('upload.', form=form)

if __name__=='__main__': app.run(debug=True)

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

标签:文件