PHP 获取上传文件的实际类型
方案一:
mime_content_type (
string
$filename ) :
string
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
mime_content_type — 检测文件的 MIME 类型
方案二:
/** * 文件扩展名说明(部分) * 3780 pdf * 7173 gif * 255216 jpg * 13780 png * 6677 bmp * 8075 docx * 208207 doc */ public function checkFileType($file = '', $ext = '') {//$file=$_FILE['file']['tmp_name']; $limitType = ['3780', '7173', '255216', '13780', '6677', '208207']; $fp = fopen($file, "rb"); $bin = fread($fp, 2); //只读2字节 fclose($fp); // unpack() 函数从二进制字符串对数据进行解包 $str_info = @unpack("C2chars", $bin); // intval() 函数用于获取变量的整数值 $type_code = intval($str_info['chars1'] . $str_info['chars2']); if (!in_array($type_code, $limitType)) { Response::apiError('上传的文件类型不符合要求'); } $file_type = ''; switch ($type_code) { case 3780: $file_type = 'pdf'; break; case 7173: $file_type = 'gif'; break; case 255216: $file_type = 'jpg'; break; case 13780: $file_type = 'png'; break; case 6677: $file_type = 'bmp'; break; case 8075: $file_type = 'docx'; break; case 208207: $file_type = 'doc'; break; default : $file_type = 'unKnown'; } if ($file_type != $ext) { Response::apiError('请不要试图修改上传文件后缀名,否则文件无法正常显示,源文件后缀应为:.' . $file_type); } }