fuka’s diary

A blog that shares my knowledge.

PHPでのMIMEタイプ取得にはmime_content_typeを使いましょう

PHPにおけるファイルのMIMEタイプ取得にはmime_content_typeを使いましょう。
一部で非推奨とする誤った情報が根強いようですが、これは2016年までの話です。
今も一部のドキュメントでは非推奨と表示されていますが、それは誤りです。

mime_content_typeが取得する代表的なMIMEタイプを下記に列挙します。

<?php
$mime_types = [
	'application/javascript'=>['js'],
	'application/json'=>['json'],
	'application/msword'=>['doc'],
	'application/pdf'=>['pdf'],
	'application/vnd.ms-cab-compressed'=>['cab'],
	'application/vnd.ms-excel'=>['xls'],
	'application/vnd.ms-outlook'=>['msg'],
	'application/vnd.ms-powerpoint'=>['ppt'],
	'application/vnd.oasis.opendocument.spreadsheet'=>['ods'],
	'application/vnd.oasis.opendocument.text'=>['odt'],
	'application/vnd.openxmlformats-officedocument.presentationml.presentation'=>['xlsm', 'xlsx'],
	'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'=>['docm', 'docx'],
	'application/vnd.openxmlformats-officedocument.wordprocessingml.document'=>['pptm', 'pptx'],
	'application/x-lzh-compressed'=>['lzh'],
	'application/xml'=>['xml'],
	'application/x-msaccess'=>['accdb', 'mdb'],
	'application/x-msdownload'=>['exe', 'msi'],
	'application/x-rar-compressed'=>['rar'],
	'application/x-shockwave-flash'=>['swf'],
	'application/zip'=>['3mf', 'zip'],
	'audio/mpeg'=>['mp3'],
	'image/bmp'=>['bmp'],
	'image/gif'=>['gif'],
	'image/jpeg'=>['jpe', 'jpeg', 'jpg'],
	'image/png'=>['png'],
	'image/svg+xml'=>['svg', 'svgz'],
	'image/tiff'=>['tif'],
	'image/tiff'=>['tiff'],
	'image/vnd.microsoft.icon'=>['ico'],
	'text/css'=>['css'],
	'text/html'=>['htm', 'html', 'odc', 'php'],
	'text/plain'=>['bas', 'bat', 'cls', 'csv', 'ini', 'php', 'txt', 'vbs'],
	'video/mp4'=>['mp4'],
	'video/quicktime'=>['mov', 'qt'],
	'video/x-flv'=>['flv'],
];

ちなみに、上記に含みませんでしたが、扱いがありそうなファイルについても表にします。

MIME type Extension
application/postscript ai
application/postscript eps
application/postscript ps
application/rtf rtf