test_flask.py
from flask import Flask,render_template,request,redirect,url_for,flashfrom werkzeug.utils import secure_filename #导入安全函数import osapp = Flask(__name__)app.config['SECRET_KEY'] = os.urandom(24)ALLOWED_EXTENSIONS = set(['txt', 'png', 'jpg', 'jpeg', 'gif']) #设置可以上传的文件def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS #返回结果为false或者true [1]为获取的文件的后缀名@app.route('/')def hello_world(): return 'Hello World!'@app.route('/upload/',methods=['GET','POST'])def upload(): if request.method == 'POST': f = request.files['file'] #print (f) if f and allowed_file(f.filename): app.config['UPLOAD_FOLDER'] = os.path.join(os.path.dirname(__file__),'static/uploads') #设置上传文件到服务器的路径 #print(app.config['UPLOAD_FOLDER']) if not os.path.exists(app.config['UPLOAD_FOLDER']): #如果路径不存在则创建 os.makedirs(app.config['UPLOAD_FOLDER']) upload_file_name = os.path.join(app.config['UPLOAD_FOLDER'],f.filename) #上传的文件保存的名称,如果这里用secure_filename函数,对于中文文件,最后只保存为k后缀名 #print(secure_filename(f.filename)) f.save(upload_file_name) flash("文件上传成功", 'ok') return redirect(url_for('upload')) flash("文件上传失败,无效的格式 %s" % f.filename.rsplit('.', 1)[1],'err') return redirect(url_for('upload')) return render_template('upload.html')if __name__ == '__main__': app.run(debug=True)
upload.html
{ % for v in get_flashed_messages(category_filter=['err']) %}文件上传示例
{
{ v }} { % endfor %} { % for v in get_flashed_messages(category_filter=['ok']) %}{
{ v }} { % endfor %}