Fileinfo 関数が使えない環境で MIME Type を判定したいときに。
function my_check_mime_type( $tmp_name ) {
$bin_data = bin2hex ( file_get_contents ( $tmp_name ) );
$patt = array (
'89504e47' => 'image/png',
'ffd8' => 'image/jpeg',
'47494638' => 'image/gif',
);
foreach ( $patt as $mgk_num => $mime_type ) {
if ( strpos ( $bin_data, "{$mgk_num}" ) === 0 )
return $mime_type;
}
return false;
}
echo ( $mime_type = my_check_mime_type( $_FILES['file']['tmp_name'] ) ) ? $mime_type : '不明なファイル形式';
マジックナンバーの参考:https://qiita.com/forestsource/items/15933888466ba9c3f048
Fileinfo 関数が使える環境ならたったのこれだけなので、是非インストールしておきたいモジュール。
$tmp_name = $_FILES['file']['tmp_name'];
$finfo = new finfo ( FILEINFO_MIME_TYPE );
$mime_type = $finfo->file( $tmp_name );
echo $mime_type;


