> 백엔드 개발 > PHP 튜토리얼 > PHP分析文件头信息判断上传文件的类型

PHP分析文件头信息判断上传文件的类型

WBOY
풀어 주다: 2016-06-20 13:04:38
원래의
1092명이 탐색했습니다.

在用PHP上传文件时一般限制可上传的文件类型的做法是通过文件的后缀进行判断,但这样的做法存在缺点,相信所有的phper们都是知道的,下面介绍一个可以从最根本上判断用户上传的文件类型的函数。

简要分析一下本函数通过文件头信息实现判断上传文件类型的过程思路,首先使用用fopen()函数打开上传的文件,然后通过fread()读取文件的前2个字节。得到的内容会是二进制的字符串,为了能在程序代码中做判断,这里使用的是unpack()函数把二进制数据转换成十进制数字的字符串(unpack()函数主要用于二进制操作,具体用法可参见php帮助文档,这里做解释!),然后进行判断即可。

下面直接把案例代码贴出来吧:

<p>$filename='http://www.scutephp.com/logo.gif';</p>$file=fopen($filename,'rb');<br />$bin=fread($file,2); //只读取上传文件的头文信息的2个字节<br />fclose($file);<br />$strInfo=@unpack('c2chars',$bin);<br />$typeCode=intval($strInfo['chars1'].$strInfo['chars2']);<br />$fileType='';<br />switch ($typeCode){<br />	case 7790:<br />		$fileType='exe';<br />	break;<br />	case 7784:<br />		$fileType='midi';<br />	break;<br />	case 8297:<br />		$fileType='rar';<br />	break;<br />	case 255216:<br />		$fileType='jpg';<br />	break;<br />	case 7173:<br />		$fileType='gif';<br />	break;<br />	case 6677:<br />		$fileType='bmp';<br />	break;<br />	case 13780:<br />		$fileType='png';<br />	break;<br />	default:<br />		echo 'unknown';<br />	break;<br />}<br />echo '文件类型:'.$fileType.' 文件头信息:'.$typeCode;
로그인 후 복사


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿