解决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检测网页是否有日常链接
Jun 03 Python
Python随机读取文件实现实例
May 25 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
python版简单工厂模式
Oct 16 Python
python3+PyQt5实现拖放功能
Apr 24 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
python多线程并发及测试框架案例
Oct 15 Python
Python for循环及基础用法详解
Nov 08 Python
Pycharm小白级简单使用教程
Jan 08 Python
Windows系统下pycharm中的pip换源
Feb 23 Python
python学生管理系统的实现
Apr 05 Python
Python中pass的作用与使用教程
Nov 13 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 preg_replace替换实例讲解
2013/11/04 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
2013/04/25 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
python检测是文件还是目录的方法
2015/07/03 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
简单英文演讲稿
2014/01/01 职场文书
公司业务员岗位职责
2014/03/18 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
课内比教学心得体会
2014/09/09 职场文书
Navicat连接MySQL错误描述分析
2021/06/02 MySQL