在Flask Web开发入门(八)之文件上传中,我们探讨了Flask框架下的文件上传,本章我们将使用Flask插件Flask-Uploads示例说明的图片上传与展现如何实现
开始之前,我们先简单看下Flask-Uploads源码实现:
类UploadSet:
文件上传配置集合,包含三个参数:
- name:文件上传配置集合的名称,默认files,一般不用修改,只是一个标识,要求数字、字母或两者组合,满足isalnum
- extensions:上传文件类型,默认DEFAULTS = TEXT + DOCUMENTS + IMAGES + DATA,包含文本、文档、图片、CSV、INI、YML等配置文件
- default_dest:上传文件的默认存储路径,我们可以通过app.config[‘UPLOADS_DEFAULT_DEST’]来指定
方法configure_uploads
应用配置好之后,调用此方法,扫描上传配置选项并保存到我们的应用中,注册上传模块。
方法resolve_conflict
解决名字重复问题,如果服务器上已经存在指定文件名的文件,那么Flask-Uploads通过此方法解决文件保存时的冲突问题,解决策略:文件名后加_num,num从1开始,之后拿新的名字重新判断是否存在,如果仍旧存在,再次加1,直至不存在为止
方法实现:
name, ext = os.path.splitext(basename)
count = 0
while True:
count = count + 1
newname = '%s_%d%s' % (name, count, ext)
if not os.path.exists(os.path.join(target_folder, newname)):
return newname
<