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