当前位置: 首页 > 后端技术 > PHP

PHP检测上传文件的真实文件类型

时间:2023-03-29 16:14:41 PHP

'fail','msg'=>'文件不存在',//文件不存在];}@fclose($文件);$info=@unpack("C2chars",$byte);$typeCode=intval($info['chars1'].$info['chars2']);/***switch中case值对应的文件类型需要自行校验,不保证准确性(输出typeCode测试)。*/switch($typeCode){案例208207:{$fileType='doc';//excel也是208207break;}案例8075:{$fileType='docx';//zip,xlsx文件也是8075,docx格式文件本质上是ZIP文件break;}案例255216:{$fileType='jpg';//休息;}案例13780:{$fileType='png';//休息;}案例3780:{$fileType='pdf';//休息;}案例7173:{$fileType='gif';//休息;}案例5666:{$fileType='psd';//休息;}案例210187:{$fileType='txt';//这个验证不符合,测试发现不同txt的typeCode不一样break;}案例8297:{$fileType='rar';//休息;}默认:{$fileType='';休息;}}}catch(Exception$ex){$fileType='';}/***返回文件信息*/if(!empty($fileType)){return['status'=>'success',//验证成功'fileType'=>$fileType,//文件类型'fileCode'=>$typeCode,//类型值];}else{return['status'=>'fail',//验证失败'msg'=>'UnknownFileType',//unknownfiletype];}}}/***调用*/$fileUrl='NBB2.jpg';//需要校验的文件路径$fileObj=newFileType();$type=$fileObj->checkFileHeader($fileUrl);var_dump($type);