文件上传
- 在模版
html
中,表单需要指定encotype='multipart/form-data'
(相当于文件的格式类型)才能上传文件。 - 在后台如果想要获取上传的文件,那么应该使用
request.files.get('文件名')
来获取。 - 保存文件之前,先要使用
werkzeug.utils.secure_filename
来对上传上来的文件名进行一个过滤。能保证不会有安全问题。 - 获取到上传上来的文件后,使用
文件对象.save(路径)
方法来保存文件。路径=完整路径=路径名+文件名
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>
python启动文件:
from flask import Flask,request,render_template
import os
from werkzeug.utils import secure_filename
app = Flask(__name__)
#相当于指定存储上传文件的位置
UPLOAD_PATH = os.path.join(os.path.dirname(__file__),'images')
@app.route('/upload/',methods=['GET','POST'])
def upload():
if request.method == 'GET':
return render_template('upload.html')
else:
desc = request.form.get("desc")
pichead = request.files.get("pichead")
#包装一下 保证文件安全
filename = secure_filename(pichead.filename)
pichead.save(os.path.join(UPLOAD_PATH,filename))
print(desc)
return '文件上传成功'
if __name__ == '__main__':
app.run(debug=True)