實現上傳文件
1、在form表單中,需指定enctype="multipart/form-data",且文件上傳的input標簽type="file"
2、在后台獲取上傳的文件request.files.get('文件上傳input標簽的name屬性值')
3、保存文件之前,先使用werkzeug.utils.secure_filename來對文件名進行一次過濾,避免安全問題
4、獲取到上傳的文件后,使用 文件對象.save(路徑)保存文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上傳文件</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<table>
<tbody>
<tr>
<td>頭像:</td>
<td><input type="file" name="avatar"></td>
</tr>
<tr>
<td>描述:</td>
<td><input type="text" name="desc"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="點擊提交"></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

import os
from flask import Flask, request, render_template
from werkzeug.utils import secure_filename
app = Flask(__name__)
@app.route('/upload/', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
desc = request.form.get('desc') # 獲取描述信息
avatar = request.files.get('avatar') # 獲取文件:request.files
filename = secure_filename(avatar.filename) # 防黑客在文件名上做手腳:../../User/xxx/.bashrc
avatar.save(os.path.join('files', filename)) # 保存文件
print(desc)
return '文件上傳成功'
return render_template('upload.html')
if __name__ == '__main__':
app.run(debug=True)





獲取文件
定義一個url與視圖函數,來獲取指定文件,在這個視圖函數中,使用flask.send_from_directory(目錄,文件名)來獲取


import os
from flask import Flask, request, render_template, send_from_directory
from werkzeug.utils import secure_filename
app = Flask(__name__)
@app.route('/get_file/<filename>/')
def get_file(filename):
return send_from_directory('files', filename) # 文件路徑,文件名
