解决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 相关文章推荐
使用Django的模版来配合字符串翻译工作
Jul 27 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
python的debug实用工具 pdb详解
Jul 12 Python
django自定义模板标签过程解析
Dec 14 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
Feb 13 Python
python str字符串转uuid实例
Mar 03 Python
基于Python的Jenkins的二次开发操作
May 12 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
Mar 02 Python
简单谈谈Python面向对象的相关知识
Jun 28 Python
关于的python五子棋的算法
May 02 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 UBB 解析实现代码
2011/11/27 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
PHP实现货币换算的方法
2014/11/29 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
php封装的smarty类完整实例
2016/10/19 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Python实现随机选择元素功能
2017/09/14 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
PyQt5组件读取参数的实例
2019/06/25 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
安全标准化实施方案
2014/02/20 职场文书
工厂车间标语
2014/06/19 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers