解决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多线程编程方式分析示例详解
Dec 06 Python
Python装饰器使用示例及实际应用例子
Mar 06 Python
Python入门教程之if语句的用法
May 14 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
python实现周期方波信号频谱图
Jul 21 Python
Flask模拟实现CSRF攻击的方法
Jul 24 Python
python的debug实用工具 pdb详解
Jul 12 Python
python 消除 futureWarning问题的解决
Dec 25 Python
python实现tail -f 功能
Jan 17 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
python3定位并识别图片验证码实现自动登录功能
Jan 29 Python
Python中itertools库的四个函数介绍
Apr 06 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中str_replace函数使用小结
2008/10/11 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
PHP类的封装与继承详解
2015/09/29 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
js密码强度检测
2016/01/07 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
对于Python的框架中一些会话程序的管理
2015/04/20 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
AJAX的全称是什么
2012/11/06 面试题
孝老爱亲模范事迹材料
2014/05/25 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
个人年终总结范文
2015/03/09 职场文书
教师求职简历自我评价
2015/03/10 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书