解决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实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
python运行其他程序的实现方法
Jul 14 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
Python中的TCP socket写法示例
May 11 Python
django中模板的html自动转意方法
May 27 Python
PyCharm 设置SciView工具窗口的方法
Jan 15 Python
Python文件路径名的操作方法
Oct 30 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
Tensorflow读取并输出已保存模型的权重数值方式
Jan 04 Python
Python气泡提示与标签的实现
Apr 01 Python
Python如何实现感知器的逻辑电路
Dec 25 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 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验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
Python 函数基础知识汇总
2018/03/09 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
python如何查看网页代码
2020/06/07 Python
Python try except finally资源回收的实现
2021/01/25 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
成品仓管员岗位职责
2013/12/11 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
班主任个人工作反思
2014/04/28 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript
Java死锁的排查
2022/05/11 Java/Android