PHP でファイルをアップロードする場合、ファイルの拡張子で判断してアップロードできるファイルの種類を制限するのが一般的ですが、この方法には欠点があると思います。ユーザーがアップロードしたファイルの種類を判断するために最も基本的な関数から使用できるメソッド。
この関数がファイル ヘッダー情報を通じてアップロードされたファイルの種類を判断するプロセスを簡単に分析します。まず、fopen() 関数を使用してアップロードされたファイルを開き、ファイルの最初の 2 バイトを読み取ります。フレッド()。取得した内容はバイナリ文字列になりますので、プログラムコード内で判断するために、ここではunpack()関数を使用してバイナリデータを10進数の文字列に変換します(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;