HTML中
# enctype="multipart/form-data" 文件上传表单必填属性
<form action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>头像</td>
# 上传文件的 type 为 file
<td><input type="file" name="image_file"></td>
</tr>
<tr>
<td>描述</td>
<td><input type="text" name="desc"></td>
</tr>
<tr>
<td><input type="submit" value="上传"></td>
</tr>
</table>
</form>
view视图中
from flask import Flask,request
from werkzeug.utils import secure_filename
from forms import UploadForm
from werkzeug.datastructures import omebinedMultiDict
app = Flask(__name__)
@app.route("/")
def index():
return "首页"
@app.route("/upload/",methods=['GET','POST'])
def upload():
form = UploadForm(CombinedMultiDict([request.form,request.files]))
if request.method == 'GET':
return reder_template("upload.html")
else:
desc = request.form.get("desc")
image_file = request.files.get("image_file")
# 对上传上来的文件名进行标准化处理
filename = secure_filename(image_file.filename)
# "images" 文件保存路径及名称
# image_file.filename 文件的名字
image_file.save(os.path.join("images",image_file.filename))
if __name__ == '__main__':
app.run(debug = True)
上传文件表单验证
from wtforms import Form,FileField,StringField
from flask_wtf.file import fileAllowed,FileRequired
from vtfprms.valudators import InputRequired
class UploadForm(Form):
image_file = FileField(validators = [FileRequired(),FileAllowed(['jpg','gif','png'])])
desc = StringField(validators[InputRequired()])