前一篇使用了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相关推荐

  1. Flask 上传自定义头像

    Flask Web 开发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能 今天想到最基本的功能,自定义头像 那这样的功能,设计到2大基本功能块 1:如何进行 ...

  2. python代码图片头像_Flask 上传自定义头像的实例详解

    Flask Web 开发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能 今天想到最基本的功能,自定义头像 那这样的功能,设计到2大基本功能块 1:如何进行 ...

  3. 升级IOS8游戏上传自定义头像功能失效的问题

    为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核时,测试那边的同事反馈说游戏上传自定义头像功能不可用了. 游戏上传自定义功能的简介:卡牌游戏最初是<比武招亲>中有一个充VI ...

  4. WordPress怎么使用支持注册用户上传自定义头像功能?

    WordPress怎么使用支持注册用户上传自定义头像功能?认Wordpress支持显示Gravatar头像,但目前由于众所周知的原因,申请Gravatar头像比较困难只能显示默认的古怪头像,对注册用户 ...

  5. python flask上传文件_Python之利用Flask上传文件、Flask_RESTful

    Flask上传文件 回顾知识点form表单中,一旦涉及到上传文件就要就必须要有enctype属性,而且必须等于multipart/form-data.而且提交方式为'post',method = 'p ...

  6. Unity 上传自定义头像

    使用NativeGallery插件 using System.Collections; using System.Collections.Generic; using UnityEngine; usi ...

  7. flask 接口上传文件_Flask干货:Flask数据交换——上传文件

    图 | 源网络文 | 5号程序员01 事情是这样的. 有一天五号程序员打算网购一盒巧克力送给自己的女朋友 想必女朋友收到礼物是这样的: 结果商家邮寄来的巧克力中夹着一张纸条: 害!你说气不气人,现在都 ...

  8. flask 上传头像

    上传头像,自己感觉了好久,就是上传文件呗其实,存在一个路径,数据库存储这个路径,然后展示给前端,啥都不说,看怎么实现的. 数据库设置如下 user_image=db.Column(db.String( ...

  9. python flask上传文件_flask 文件上传(单文件上传、多文件上传)--

    文件上传 在HTML中,渲染一个文件上传字段只需要将标签的type属性设为file,即. 这会在浏览器中渲染成一个文件上传字段,单击文件选择按钮会打开文件选择窗口,选择对应的文件后,被选择的文件名会显 ...

  10. 利用flask写的接口(base64, 二进制, 上传视频流)+异步+gunicorn部署Flask服务+多gpu卡部署

    一.flask写的接口 1.1 manage.py启动服务(发送图片base64版) 这里要注意的是用docker的话,记得端口映射 #coding:utf-8 import base64 impor ...

最新文章

  1. Unix 和 Linux
  2. MVC如何添加Model
  3. linux gpio按键驱动程序,Linux GPIO Key 驱动的加载
  4. 06 使用VS2012开发简单控制器程序 1214
  5. vue子组件触发祖先元素的执行的方法
  6. 移动开发之设计稿转换页面单位尺寸
  7. SQL语句详解(二)——select基本查询操作
  8. c语言直线和圆的方程结论,直线与圆常见公式结论.doc
  9. wget php mirror 地址,wget命令镜像网站
  10. 组件的文件跟组件清单中的验证信息不匹配
  11. 调用tel://打电话
  12. 数独的生成算法和解题算法
  13. 苹果自带输入法怎么换行_iPhone输入无法换行?这些办法解决你的问题
  14. AndroidStudio安装配置教程(参考)
  15. 论文阅读_广义加性模型_GAMs
  16. nohup命令原理解析
  17. ARM 安装中文输入法
  18. 福克斯连接android手机,福克斯改装安卓9寸大屏幕导航和行车记录仪
  19. 激情个P—leo看赢在中国第三季(2)
  20. 计算机硬盘里储存什么信息,你的电脑硬盘里都存着哪些小秘密?

热门文章

  1. 我的世界电脑锁屏.html,怎么设置电脑锁屏
  2. iPhone所有屏幕分辨率
  3. 计算机vb输入框函数,VB基本函数大全
  4. 『 论文阅读』Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling
  5. (pyqt5 qml qt quick) QAbstractTableModel.columnCount() is abstract and must be overridden
  6. 简述osi参考模型各层主要功能_简述OSI参考模型中各层的主要功能
  7. kettle使用httpClient获取ES索引数据
  8. emoji粉色爱心符号_特殊符号
  9. bzoj 3709 [PA2014]Bohater
  10. Django ORM模型一对一、一对多、多对多的操作详解