文件上传需要导入的模块
import os 系统模块,用于加载配置
from flask import Blueprint 蓝图
将Manager导入app(用于在控制台输入命令,flask不导入不能命令行运行)
from flask_script import Manager
manager=Manager(app)
将文件上传的配置信息存入一个py文件,这里用settings
import os
#得到当前系统路径
BASEDIR=os.getcwd()
#文件上传目录
UPLOAD_FOLDER=os.path.join(BASEDIR,'static/upload')
# 文件上传限制
ALLOWED_SUFFIX=['jpg','png','bmp','jpeg'] #限制文件后缀
ALLOWED_MAX_SIZE=1024*1024*2 # 文件大小限制
将settings配置文件引入app
app.config.from_pyfile("settings.py")
在views视图中创建蓝图
from flask import Blueprint
metoo=Blueprint('metoo',__name__,url_prefix='/app') #蓝图名,__name__当前模块名,url_prefix路由前缀
app中注册蓝图
from views import metoo
app.register_blueprint(metoo)
views试图中写函数
@metoo.route('/advance/',methods=['POST'])
def advance_upload():
#request 获取文件上传对象
upload_obj=request.files.get('picture')
# 验证文件类型
if upload_obj and allowed_file(upload_obj.filename):
#得到保存路径 current_app 代表应用程序对象,也就是app模块中的app
path=os.path.join(current_app.config.get('UPLOAD_FOLDER'),upload_obj.filename)
upload_obj.save(path)
size=os.path.getsize(path)
if size > current_app.config.get('ALLOWED_MAX_SIZE'):
os.remove(path)
return "文件大小不符合要求"
else:
return "文件不存在或者类型不符合要求"
return "hhhh"