Flask 上传自定义头像_1 使用Flask Uploads
前一篇使用了flask里面的基本功能实现了上传文件
他基本上用的都是python本身的功能,另外加了一个flask里面的request封装
有点自己造了半个轮子的感觉
后来在Flask官方文档里面,又看到了提及有一个简单的方法可以进行上传
就是用Flask Uploads,其实说白了就是对上一篇造的轮子的再封装
话不多,先配置环境,还是需要下载的
python这种等同于绿色环境的配置方法.............简直是不能再爱更多........
pip install flask-uploads
直接举例子了,在manage.py文件里面进行设置
icon = UploadSet('TEST') #名字最好取大写,因为config里面都是要求大写,这样容易匹配
configure_uploads(app, icon) #再把app和这个icon这个上传组给绑定
---------------------------------------------------------------------------------踩坑---------------------------------------------------------------------------------
这里刨了个大坑,我把这个实例生成以及为app加载配置的过程,放到了forms里面去执行,结果一直报错
RuntimeError: cannot access configuration outside request
真的是百思不得其解
后来想了下,configure_uploads这个函数功能,是不是要运行app时候加载的?你如果放在forms里面,他没有机会被运行???
因为forms是一个相对静态的文件,我们主要是从里面调取Form格式
所以我把icon=UploadSet('TEST')这句保留在了forms里
而把configure_uploads这句放在了manage里面(最后就能成功运行了,当然,这是后话了)
----------------------------------------------------------------------------------出坑-------------------------------------------------------------------------------------
随后还要在config文件里面进行设置,因为我们当前测试是用图片来进行测试,所以目前先导入IMAGES这个允许的上传组
from flask_uploads import IMAGESUPLOADED_TEST_DEST=r'E:\flasky\app\flask_upload'
UPLOADED_TEST_ALLOW=IMAGES#...
我们来看一下一部分官方文档和源码
这个UploadSet的类,第一参数是名字,也就是你给这个要上传的功能取的名字,第二个是允许的扩展名,是以元组形式成列的...
最后一个是默认的上传存放路径
既然说到了允许的类型,extensions在源码里面是有设置的
默认给你封装好的如下,所以你可以在使用upload功能的时候一并导入,并且直接使用,相当方便
而同时也允许的你在config里面进行变量设置
通过什么样的方式呢?来看一下源代码
好,最后再加一个views的路由
@main.route('/upload_file',methods=['GET','POST'])
def upload_file():form = UploadForm()if form.validate_on_submit():filename=secure_filename(form.upload.data.filename)icon.save(form.upload.data , name = form.upload.data.filename)return '<p>Have a try</p>'return render_template('upload_file.html',form=form)
-----------------------------------------------------------------------------------再次踩坑------------------------------------------------------------------------------------
又双叒叕TMD踩坑了。。。。真是哔了狗了......
还记得上一篇里面的save功能么,他的第一个参数是路径,第二个参数是文件名。。。。
而这里的save,他第一个参数是文件对象,第二个参数是文件名,而且!!!他是返回一个成功保存后的完整URL!!!
一定要记住,完全不同的2个save函数!!!
----------------------------------------------------------------------------------再次出坑---------------------------------------------------------------------------------------
我把成功保存后的返回页面就简单些了个have a try,用来测试
以下测试有2步,第一个,如果是图片文件,是否可以成功
第二个,如果是非图片文件,是否会阻止及报错
说明成功保存了
再来看下上传txt文档的情况,他会阻止你上传
最后,我们还要进行一下关于上传文件容量大小的测试
flask uploads也有给你打包好的功能,同样是放在manage.py里面执行,我把文件大小设置成了102400,也就是100KB,他默认是16MB
设置这个的目的是,防止有人给你捣乱,消耗你的流量
测试过程,我上传了一张2.1MB的照片,页面直接报错了,看后台的状态吗是413,也就是
自己回头做一个自定义的413状态页面就ok
好了,flask uploads的功能目前就差不多能用了
后面要开始把上传的文件和用户头像挂钩的事情了。
Flask 上传自定义头像_1 使用Flask Uploads相关推荐
- Flask 上传自定义头像
Flask Web 开发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能 今天想到最基本的功能,自定义头像 那这样的功能,设计到2大基本功能块 1:如何进行 ...
- python代码图片头像_Flask 上传自定义头像的实例详解
Flask Web 开发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能 今天想到最基本的功能,自定义头像 那这样的功能,设计到2大基本功能块 1:如何进行 ...
- 升级IOS8游戏上传自定义头像功能失效的问题
为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核时,测试那边的同事反馈说游戏上传自定义头像功能不可用了. 游戏上传自定义功能的简介:卡牌游戏最初是<比武招亲>中有一个充VI ...
- WordPress怎么使用支持注册用户上传自定义头像功能?
WordPress怎么使用支持注册用户上传自定义头像功能?认Wordpress支持显示Gravatar头像,但目前由于众所周知的原因,申请Gravatar头像比较困难只能显示默认的古怪头像,对注册用户 ...
- python flask上传文件_Python之利用Flask上传文件、Flask_RESTful
Flask上传文件 回顾知识点form表单中,一旦涉及到上传文件就要就必须要有enctype属性,而且必须等于multipart/form-data.而且提交方式为'post',method = 'p ...
- Unity 上传自定义头像
使用NativeGallery插件 using System.Collections; using System.Collections.Generic; using UnityEngine; usi ...
- flask 接口上传文件_Flask干货:Flask数据交换——上传文件
图 | 源网络文 | 5号程序员01 事情是这样的. 有一天五号程序员打算网购一盒巧克力送给自己的女朋友 想必女朋友收到礼物是这样的: 结果商家邮寄来的巧克力中夹着一张纸条: 害!你说气不气人,现在都 ...
- flask 上传头像
上传头像,自己感觉了好久,就是上传文件呗其实,存在一个路径,数据库存储这个路径,然后展示给前端,啥都不说,看怎么实现的. 数据库设置如下 user_image=db.Column(db.String( ...
- python flask上传文件_flask 文件上传(单文件上传、多文件上传)--
文件上传 在HTML中,渲染一个文件上传字段只需要将标签的type属性设为file,即. 这会在浏览器中渲染成一个文件上传字段,单击文件选择按钮会打开文件选择窗口,选择对应的文件后,被选择的文件名会显 ...
- 利用flask写的接口(base64, 二进制, 上传视频流)+异步+gunicorn部署Flask服务+多gpu卡部署
一.flask写的接口 1.1 manage.py启动服务(发送图片base64版) 这里要注意的是用docker的话,记得端口映射 #coding:utf-8 import base64 impor ...
最新文章
- Unix 和 Linux
- MVC如何添加Model
- linux gpio按键驱动程序,Linux GPIO Key 驱动的加载
- 06 使用VS2012开发简单控制器程序 1214
- vue子组件触发祖先元素的执行的方法
- 移动开发之设计稿转换页面单位尺寸
- SQL语句详解(二)——select基本查询操作
- c语言直线和圆的方程结论,直线与圆常见公式结论.doc
- wget php mirror 地址,wget命令镜像网站
- 组件的文件跟组件清单中的验证信息不匹配
- 调用tel://打电话
- 数独的生成算法和解题算法
- 苹果自带输入法怎么换行_iPhone输入无法换行?这些办法解决你的问题
- AndroidStudio安装配置教程(参考)
- 论文阅读_广义加性模型_GAMs
- nohup命令原理解析
- ARM 安装中文输入法
- 福克斯连接android手机,福克斯改装安卓9寸大屏幕导航和行车记录仪
- 激情个P—leo看赢在中国第三季(2)
- 计算机硬盘里储存什么信息,你的电脑硬盘里都存着哪些小秘密?
热门文章
- 我的世界电脑锁屏.html,怎么设置电脑锁屏
- iPhone所有屏幕分辨率
- 计算机vb输入框函数,VB基本函数大全
- 『 论文阅读』Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling
- (pyqt5 qml qt quick) QAbstractTableModel.columnCount() is abstract and must be overridden
- 简述osi参考模型各层主要功能_简述OSI参考模型中各层的主要功能
- kettle使用httpClient获取ES索引数据
- emoji粉色爱心符号_特殊符号
- bzoj 3709 [PA2014]Bohater
- Django ORM模型一对一、一对多、多对多的操作详解