MIMEタイプを取得するPHP関数のまとめ

今回は小ネタで行きます。

PHPで意外と情報のないMime Typeの取得関数を作ってみました。

 

[code]

function getMimeType($path){
$mimeTypeList = array(
‘jpg’ => ‘image/jpeg’,
‘jpeg’ => ‘image/jpeg’,
‘jp2’ => ‘image/jp2’,
‘png’ => ‘image/png’,
‘gif’ => ‘image/gif’,
‘bmp’ => ‘image/bmp’,
‘ai’ => ‘application/postscript’,
‘txt’ => ‘text/plain’,
‘csv’ => ‘text/csv’,
‘tsv’ => ‘text/tab-separated-values’,
‘doc’ => ‘application/msword’,
‘xls’ => ‘application/vnd.ms-excel’,
‘ppt’ => ‘application/vnd.ms-powerpoint’,
‘pdf’ => ‘application/pdf’,
‘xdw’ => ‘application/vnd.fujixerox.docuworks’,
‘htm’ => ‘text/html’,
‘html’ => ‘text/html’,
‘css’ => ‘text/css’,
‘js’ => ‘text/javascript’,
‘hdml’ => ‘text/x-hdml’,
‘mp3’ => ‘audio/mpeg’,
‘mp4’ => ‘audio/mp4’,
‘wav’ => ‘audio/x-wav’,
‘mid’ => ‘audio/midi’,
‘midi’ => ‘audio/midi’,
‘mmf’ => ‘application/x-smaf’,
‘mpg’ => ‘video/mpeg’,
‘mpeg’ => ‘video/mpeg’,
‘wmv’ => ‘video/x-ms-wmv’,
‘swf’ => ‘application/x-shockwave-flash’,
‘3g2’ => ‘video/3gpp2’,
‘zip’ => ‘application/zip’,
‘lha’ => ‘application/x-lzh’,
‘lzh’ => ‘application/x-lzh’,
‘tar’ => ‘application/x-tar’,
‘tgz’ => ‘application/x-tar’,
//’tar’ => ‘application/octet-stream’,
//’tgz’ => ‘application/octet-stream’,
);
if(function_exists(“finfo_file”)){
$mimetype = finfo_file($finfo, $path);
finfo_close($finfo);
return $mimetype;
}else{
$info = pathinfo($path);
if(isset($info[“extension”]) && isset($mimeTypeList[$info[“extension”]])){
return $mimeTypeList[$info[“extension”]];
}else if(!function_exists(‘mime_content_type’)){
return exec(‘file -Ib ‘.$path);
}else{
// 非推奨
return mime_content_type($path);
}
}
}

やっていることは

1.PHP5.3から使用できるfinfo_file()を使えたら使用する。

2 . 上記がダメなら拡張子から判別

  1. さらにダメならmime_content_type()で取得(ただしこの関数は非推奨関数です)

  2. それでもだめならexec()でLinuxコマンドで取得

 

ただし注意点としてfinfo_fileは一度ファイルを読み込むため、ファイルサイズが大きいとその分処理に時間がかかります。

わたし的にあまり気に入らないのですが、拡張子からMIME TYPEを取得するのが一番無難かもしれません。

ほかにいい方法知っている賢者の方いましたらおしえてくださーい♪

buy phentermine without prescription

コメントを残す

メールアドレスが公開されることはありません。