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)
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。