代码
import os from flask import Flask, flash, request, redirect, url_for from werkzeug.utils import secure_filename UPLOAD_FOLDER = '/path/to/the/uploads' #文件存储目录 ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'} #允许上传文件类型(拓展名) app = Flask(__name__) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER #配置 def allowed_file(filename): #检查上传文件的拓展名是否在ALLOWED_EXTENSIONS return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS @app.route('/', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': #检查是否有文件被上传 if 'file' not in request.files: flash('No file part')#闪现提示 return redirect(request.url)#重定向 file = request.files['file'] # if user does not select file, browser also # submit an empty part without filename if file.filename == '': flash('No selected file') return redirect(request.url)#重定向 if file and allowed_file(file.filename):#有合法文件 filename = secure_filename(file.filename) #secure_filename检查文件名 file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) return redirect(url_for('uploaded_file', filename=filename)) #重定向到uploaded_file/filename @app.route('/uploads/<filename>') def uploaded_file(filename):#传输文件 return send_from_directory(app.config['UPLOAD_FOLDER'], filename)request属性及用途:
- request.dat:获取json请求体字符串
- request.form:获取表单请求体参数
- request.args:获取url参数
- request.method:区分GET/POST请求方法
- request.files:获取上传文件信息