解决python 上传图片限制格式问题


Posted in Python onOctober 30, 2019

终于忙完有空更新了,这次说下一个比较简单的东西,限制上传图片格式问题。

先上代码!

img_file = 'D:\\image\\test.jpg'
    # uuid生成文件名
    key = shortuuid.ShortUUID().random(length=9)
    if img_file.size > 2097152:
      raise exceptions.APIException('图片大小超出限制')
    # file_postfix = img_file.name.split('.')[1]
    suffix = img_file.name.rfind('.')
    if suffix == -1:
      raise exceptions.APIException('图片不正确')
    file_postfix = img_file.name[suffix + 1:] 
    if file_postfix not in ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'JPG', 'PNG',
                'BMP', 'JPEG', ]:
      raise exceptions.APIException('图片格式不正确')
    file_name = key + '.' + file_postfix

以前项目里总是再用file_postfix = img_file.name.split('.')[1]这种方法再取文件后缀进行判断格式,这种方法对普通的文件名还是没问题的例如:图片1.jpg、图片2.jpg、图片3.jpg。但是遇到www.图片1.jpg这种的图片名称就会爆炸,因为图片名称中存在两个.

suffix = img_file.name.rfind('.') 而str的rfind方法就可以避免这种问题,因为这是反响寻找。举个例子

a = '123456'  
 print('下标', a.rfind('5'))

输出结果:下标 4

a = '123456'  
 print('下标', a.rfind('7'))

 输出结果: 下标 -1

rfind方法从字符串最后以为开始找,找到返回下标,找不到返回-1。

所以 www.test.jpg 这种格式的图片他会从最后位置开始找.找到之后在截取就只剩jpg了,也就好判断了。

要注意的是rfind的下标是从0开始的,所以截取的时候记得加1。

行了 其他的基本没啥了。这篇文章就到这吧,最近会更新上传图片到微信服务器。

总结

以上所述是小编给大家介绍的解决python 上传图片限制格式问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python的print用法示例
Feb 11 Python
python检测远程udp端口是否打开的方法
Mar 14 Python
详解Python中time()方法的使用的教程
May 22 Python
python爬虫获取多页天涯帖子
Feb 23 Python
python如何统计序列中元素
Jul 31 Python
Python变量赋值的秘密分享
Apr 03 Python
python实现关闭第三方窗口的方法
Jun 28 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
python实现拼接图片
Mar 23 Python
快速一键生成Python爬虫请求头
Mar 04 Python
Python字典的概念及常见应用实例详解
Oct 30 #Python
Python集合基本概念与相关操作实例分析
Oct 30 #Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 #Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 #Python
python常见字符串处理函数与用法汇总
Oct 30 #Python
pygame库实现俄罗斯方块小游戏
Oct 29 #Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 #Python
You might like
PHP信号量基本用法实例详解
2016/02/12 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
JavaScript日历实现代码
2010/09/12 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
vue 左滑删除功能的示例代码
2019/01/28 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
对dataframe进行列相加,行相加的实例
2018/06/08 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
Django模板Templates使用方法详解
2019/07/19 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Python实现仿射密码的思路详解
2020/04/23 Python
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
高校毕业生自我鉴定
2013/10/27 职场文书
八项规定整改方案
2014/02/21 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
入党申请书怎么写?
2019/06/11 职场文书