PHP判断上传文件类型最安全,最真实的解决办法

回复 星标
更多
PHP判断上传文件类型最安全,最真实的解决办法»

​ 

php通过判断上传文件的头字符来判断文件的类型,这可以称得上是最安全,最真实确定上传文件类型的方法了,具体实现方法:

/**
* 读取文件前几个字节 判断文件类型
* @return string
*/
function checkFileType($filename){
	$file=fopen($filename,'rb');
	$bin=fread($file,2); //只读2字节
	fclose($file);
	$strInfo =@unpack("c2chars",$bin);
	$typeCode=intval($strInfo['chars1'].$strInfo['chars2']);
	$fileType='';
	switch($typeCode){
		case 7790:
			$fileType='exe';
		break;
		case 7784:
			$fileType='midi';
		break;
		case 8297:
			$fileType='rar';
		break;
		case 255216:
			$fileType='jpg';
		break;
		case 7173:
			$fileType='gif';
		break;
		case 6677:
			$fileType='bmp';
		break;
		case 13780:
			$fileType='png';
		break;
		default:
			$fileType='unknown'.$typeCode;
		break;
	}
	//Fix
	if($strInfo['chars1']=='-1' && $strInfo['chars2']=='-40'){
		return 'jpg';
	}
	if($strInfo['chars1']=='-119' && $strInfo['chars2']=='80'){
		return 'png';
	}
	return $fileType;
}
新窗口打开 关闭