バイナリデータをチェックして、ユーザーがアップロードしたファイルの種類を見つける必要があり、そのための完璧なソリューションを見つけました。
具体的に言うと、これは私が使用している機能です:
function getImgType($filename) {
$handle = @fopen($filename, 'r');
if (!$handle)
throw new Exception('File Open Error');
$types = array('jpeg' => "\xFF\xD8\xFF", 'gif' => 'GIF', 'png' => "\x89\x50\x4e\x47\x0d\x0a", 'bmp' => 'BM', 'psd' => '8BPS', 'swf' => 'FWS');
$bytes = fgets($handle, 8);
$found = 'other';
foreach ($types as $type => $header) {
if (strpos($bytes, $header) === 0) {
$found = $type;
break;
}
}
fclose($handle);
return $found;
}
さて、私の質問は、他のファイルタイプのビットを取得するに.zip, .exe, mp3, mp4
はどうすればよいかということです...どこかにある種のリストがある場合、それは素晴らしいことですが、自分でそれを抽出して、これらすべてが実際にどのように行われるかを学びたいと思います動作します。