首页 >

finfo_file函数获取文件mime值验证出错的操作

php教程|php手册finfo_file函数获取文件mime值验证出错的操作
网络安全,qq技术,网站安全,系统安全,企业安全,信息技术,安全软件,软件开发,web开发,移动开发,数据库,网络技术,
php教程-php手册
今天在做图片上传 验证图片mime值时 突然发现 个别特殊情况下finfo_file 获取的MIME值不能直接使用,
ios移动app源码下载,vscode装哪些插件,ubuntu xp,tomcat 工程部署,gem sqlite3,网页设计师项目心得,数据库语句 like,云服务器有独立ip吗,js聊天插件,前端需要学习哪些框架,北京爬虫市场,php虫,seo简介,springboot留言,输入框添加标签,手机版的学习网站,网页菜单栏代码,wordpress 模板 html5,织梦网站后台教程,端午节h5页面 九宫格,e创政府网站管理系统,十大淘宝客程序lzw
按照官方的写法是
is会员查询网站源码,ubuntu跑py文件,python爬虫工具比较,php网站开发教程第9课交流,柳州国内seolzw
$finfo=finfo_open(FILEINFO_MIME);
$mime=finfo_file($finfo,$file_path);
finfo_close($finfo);
alert($mime);
sqllab源码怎么用,arm入门教程vscode,ubuntu 安装缓慢,如何修改tomcat目录,扇贝编程爬虫,字符串追加 php,新手怎么做seo分类,网站飘动,织梦模板怎么上传ftplzw
这样子获得文件mime类型的

但是今天发现这样子不行,在文件传输中如果有charset设置传输类型为二进制流的话, 就会出现类似如下图那样:

可以明显的看到,这里后面多了 分号 和后面的东西charset=binary

这里如果再进行文件mime值的验证,就算是正确合法的文件类型,也无法通过验证,因为获取到的mime值后面多了一部分二进制文件流的字符串“; charset=binary”

$file_name = $_FILES[‘imgFile’][‘name’];

$temp_arr = explode(“.”, $file_name);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);

$_mime=array(‘jpg’=>array(‘image/pjpeg’,’image/jpeg’),’gif’=>array(‘image/gif’),’png’=>array(‘image/x-png’,’image/png’),’jpeg’=>array(‘image/jpeg’,’image/pjpeg’));

if(empty($mime) || !in_array($mime,$_mime[$file_ext])){
alert(‘图片mime类型错误!’);
}

故而需要做下特殊环境需求下的兼容性处理

修改后的获得mime类型的兼容性通用方法如下(注意些列红色部分,通过正则获得正确的兼容多需求环境下的mime值正确获取):

if(empty($mime) && function_exists(‘finfo_open’)){
$finfo=finfo_open(FILEINFO_MIME);
$mime=finfo_file($finfo,$file_path);
finfo_close($finfo);
//兼容特应用殊环境下的文件上传mime精准验证
$new=preg_match(‘/([^;]+);?.*$/’,$mime,$match);
if($new) $mime=trim($match[1]);
alert($mime);
}

这样就可以正确的获得兼容环境下的mime类型进行正确的文件mime合法性验证了,运行结果如图所示:


finfo_file函数获取文件mime值验证出错的操作
  • 如何利用代码在网页中插入虚线? - 网络|
  • 如何利用代码在网页中插入虚线? - 网络| | 如何利用代码在网页中插入虚线? - 网络| ...

    finfo_file函数获取文件mime值验证出错的操作
  • 怎么样才能让网页视频出现迅雷下载? - 网络|
  • 怎么样才能让网页视频出现迅雷下载? - 网络| | 怎么样才能让网页视频出现迅雷下载? - 网络| ...

    finfo_file函数获取文件mime值验证出错的操作
  • Python Web 应用:WSGI基础
  • Python Web 应用:WSGI基础 | Python Web 应用:WSGI基础 ...