方案一:
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); } }