首頁 > 後端開發 > php教程 > PHP分析文件头信息判断上传文件的类型

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

WBOY
發布: 2016-06-20 13:04:38
原創
1077 人瀏覽過

在用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
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板