Mime Type Compatibility Function

Written something you are proud of, post it here.
Post Reply
User avatar
jacek
Site Admin
Posts: 3262
Joined: Thu May 05, 2011 1:45 pm
Location: UK
Contact:

Mime Type Compatibility Function

Post by jacek »

Another function from my library that helps with the incompatibilities between systems with different php versions. It returns the mime type of the given file using one of the available methods, if none are available (which would be weird) the file extension is used.
function file_get_mime($path){
	if (is_readable($path) === false){
		return false;
	}
	
	if (is_callable('finfo_file')){
		if (defined('FILEINFO_MIME_TYPE')){
			$finfo = finfo_open(FILEINFO_MIME_TYPE);
		}else{
			$finfo = finfo_open(FILEINFO_MIME);
		}
		
		$type = finfo_file($finfo, $path);
		finfo_close($finfo);
		
		return strtolower($type);
	}
	
	if (is_callable('mime_content_type')){
		return strtolower(mime_content_type($path));
	}
	
	if (is_callable('shell_exec')){
		$type = shell_exec('file --mime-type -p ' . escapeshellarg($path));
		
		if ($type !== ''){
			$type = end(explode(' ', $type));
			return trim(strtolower($type));
		}
	}
	
	$types = array(
		'ez'		=> 'application/andrew-inset',
		'anx'		=> 'application/annodex',
		'atom'		=> 'application/atom+xml',
		'atomcat'	=> 'application/atomcat+xml',
		'atomsrv'	=> 'application/atomserv+xml',
		'lin'		=> 'application/bbolin',
		'cap'		=> 'application/cap',
		'pcap'		=> 'application/cap',
		'cu'		=> 'application/cu-seeme',
		'davmount'	=> 'application/davmount+xml',
		'tsp'		=> 'application/dsptype',
		'es'		=> 'application/ecmascript',
		'spl'		=> 'application/futuresplash',
		'hta'		=> 'application/hta',
		'jar'		=> 'application/java-archive',
		'ser'		=> 'application/java-serialized-object',
		'class'		=> 'application/java-vm	',
		'js'		=> 'application/javascript',
		'm3g'		=> 'application/m3g',
		'hqx'		=> 'application/mac-binhex40',
		'cpt'		=> 'application/mac-compactpro',
		'nb'		=> 'application/mathematica',
		'nbp'		=> 'application/mathematica',
		'mdb'		=> 'application/msaccess',
		'doc'		=> 'application/msword',
		'dot'		=> 'application/msword',
		'bin'		=> 'application/octet-stream',
		'oda'		=> 'application/oda',
		'ogx'		=> 'application/ogg',
		'pdf'		=> 'application/pdf',
		'key'		=> 'application/pgp-keys',
		'pgp'		=> 'application/pgp-signature',
		'prf'		=> 'application/pics-rules',
		'ps'		=> 'application/postscript',
		'ai'		=> 'application/postscript',
		'eps'		=> 'application/postscript',
		'espi'		=> 'application/postscript',
		'epsf'		=> 'application/postscript',
		'eps2'		=> 'application/postscript',
		'eps3'		=> 'application/postscript',
		'rar'		=> 'application/rar',
		'rdf'		=> 'application/rdf+xml',
		'rss'		=> 'application/rss+xml',
		'rtf'		=> 'application/rtf',
		'smi'		=> 'application/smil',
		'smil'		=> 'application/smil',
		'xhtml'		=> 'application/xhtml+xml',
		'xht'		=> 'application/xhtml+xml',
		'xml'		=> 'application/xml',
		'xsl'		=> 'application/xml',
		'xsd'		=> 'application/xml',
		'xspf'		=> 'application/xspf+xml',
		'zip'		=> 'application/zip',
		'cdy'		=> 'application/vnd.cinderella',
		'kml'		=> 'application/vnd.google-earth.kml+xml',
		'kmz'		=> 'application/vnd.google-earth.kmz',
		'xul'		=> 'application/vnd.mozilla.xul+xml',
		'xls'		=> 'application/vnd.ms-excel',
		'xlb'		=> 'application/vnd.ms-excel',
		'xlt'		=> 'application/vnd.ms-excel',
		'cat'		=> 'application/vnd.ms-pki.seccat',
		'stl'		=> 'application/vnd.ms-pki.stl',
		'ppt'		=> 'application/vnd.ms-powerpoint',
		'pps'		=> 'application/vnd.ms-powerpoint',
		'odc'		=> 'application/vnd.oasis.opendocument.chart',
		'odb'		=> 'application/vnd.oasis.opendocument.database',
		'odf'		=> 'application/vnd.oasis.opendocument.formula',
		'odg'		=> 'application/vnd.oasis.opendocument.graphics',
		'otg'		=> 'application/vnd.oasis.opendocument.graphics-template',
		'odi'		=> 'application/vnd.oasis.opendocument.image',
		'odp'		=> 'application/vnd.oasis.opendocument.presentation',
		'otp'		=> 'application/vnd.oasis.opendocument.presentation-template',
		'ods'		=> 'application/vnd.oasis.opendocument.spreadsheet',
		'ots'		=> 'application/vnd.oasis.opendocument.spreadsheet-template',
		'odt'		=> 'application/vnd.oasis.opendocument.text',
		'odm'		=> 'application/vnd.oasis.opendocument.text-master',
		'ott'		=> 'application/vnd.oasis.opendocument.text-template',
		'oth'		=> 'application/vnd.oasis.opendocument.text-web',
		'cod'		=> 'application/vnd.rim.cod',
		'mmf'		=> 'application/vnd.smaf',
		'sdc'		=> 'application/vnd.stardivision.calc',
		'sds'		=> 'application/vnd.stardivision.chart',
		'sda'		=> 'application/vnd.stardivision.draw',
		'sdd'		=> 'application/vnd.stardivision.impress',
		'sdf'		=> 'application/vnd.stardivision.math',
		'sdw'		=> 'application/vnd.stardivision.writer',
		'sgl'		=> 'application/vnd.stardivision.writer-global',
		'sxc'		=> 'application/vnd.sun.xml.calc',
		'stc'		=> 'application/vnd.sun.xml.calc.template',
		'sxd'		=> 'application/vnd.sun.xml.draw',
		'std'		=> 'application/vnd.sun.xml.draw.template',
		'sxi'		=> 'application/vnd.sun.xml.impress	',
		'sti'		=> 'application/vnd.sun.xml.impress.template',
		'sxm'		=> 'application/vnd.sun.xml.math',
		'sxw'		=> 'application/vnd.sun.xml.writer',
		'sxg'		=> 'application/vnd.sun.xml.writer.global',
		'stw'		=> 'application/vnd.sun.xml.writer.template',
		'sis'		=> 'application/vnd.symbian.install',
		'vsd'		=> 'application/vnd.visio',
		'wbxml'		=> 'application/vnd.wap.wbxml',
		'wmlc'		=> 'application/vnd.wap.wmlc',
		'wmlsc'		=> 'application/vnd.wap.wmlscriptc',
		'wpd'		=> 'application/vnd.wordperfect',
		'wp5'		=> 'application/vnd.wordperfect5.1',
		'wk'		=> 'application/x-123',
		'7z'		=> 'application/x-7z-compressed',
		'abw'		=> 'application/x-abiword',
		'dmg'		=> 'application/x-apple-diskimage',
		'bcpio'		=> 'application/x-bcpio	',
		'torrent'	=> 'application/x-bittorrent',
		'cab'		=> 'application/x-cab',
		'cbr'		=> 'application/x-cbr',
		'cbz'		=> 'application/x-cbz',
		'cdf'		=> 'application/x-cdf',
		'cda'		=> 'application/x-cdf',
		'vcd'		=> 'application/x-cdlink',
		'pgn'		=> 'application/x-chess-pgn',
		'cpio'		=> 'application/x-cpio',
		'csh'		=> 'application/x-csh',
		'deb'		=> 'application/x-debian-package',
		'udeb'		=> 'application/x-debian-package',
		'dcr'		=> 'application/x-director',
		'dir'		=> 'application/x-director',
		'dxr'		=> 'application/x-director',
		'dms'		=> 'application/x-dms',
		'wad'		=> 'application/x-doom',
		'dvi'		=> 'application/x-dvi',
		'rhtml'		=> 'application/x-httpd-eruby',
		'pfa'		=> 'application/x-font',
		'pfb'		=> 'application/x-font',
		'gsf'		=> 'application/x-font',
		'pcf'		=> 'application/x-font',
		'pcf.Z'		=> 'application/x-font',
		'mm'		=> 'application/x-freemind',
		'spl'		=> 'application/x-futuresplash',
		'gnumeric'	=> 'application/x-gnumeric',
		'sgf'		=> 'application/x-go-sgf',
		'gcf'		=> 'application/x-graphing-calculator',
		'gtar'		=> 'application/x-gtar',
		'tgz'		=> 'application/x-gtar',
		'taz'		=> 'application/x-gtar',
		'hdf'		=> 'application/x-hdf',
		'phtml'		=> 'application/x-httpd-php',
		'pht'		=> 'application/x-httpd-php',
		'php'		=> 'application/x-httpd-php',
		'phps'		=> 'application/x-httpd-php-source',
		'php3'		=> 'application/x-httpd-php3',
		'php3p'		=> 'application/x-httpd-php3-preprocessed',
		'php4'		=> 'application/x-httpd-php4',
		'ica'		=> 'application/x-ica',
		'info'		=> 'application/x-info',
		'ins'		=> 'application/x-internet-signup',
		'isp'		=> 'application/x-internet-signup',
		'iii'		=> 'application/x-iphone',
		'iso'		=> 'application/x-iso9660-image',
		'jam'		=> 'application/x-jam',
		'jnlp'		=> 'application/x-java-jnlp-file',
		'jmz'		=> 'application/x-jmol',
		'chrt'		=> 'application/x-kchart',
		'kil'		=> 'application/x-killustrator',
		'skp'		=> 'application/x-koan',
		'skd'		=> 'application/x-koan',
		'skt'		=> 'application/x-koan',
		'skm'		=> 'application/x-koan',
		'kpr'		=> 'application/x-kpresenter',
		'kpt'		=> 'application/x-kpresenter',
		'ksp'		=> 'application/x-kspread',
		'kwd'		=> 'application/x-kword',
		'kwt'		=> 'application/x-kword',
		'latex'		=> 'application/x-latex',
		'lha'		=> 'application/x-lha',
		'lyx'		=> 'application/x-lyx',
		'lzh'		=> 'application/x-lzh',
		'lzx'		=> 'application/x-lzx',
		'frm'		=> 'application/x-maker',
		'maker'		=> 'application/x-maker',
		'frame'		=> 'application/x-maker',
		'fm'		=> 'application/x-maker',
		'fb'		=> 'application/x-maker',
		'book'		=> 'application/x-maker',
		'fbdoc'		=> 'application/x-maker',
		'mif'		=> 'application/x-mif',
		'wmd'		=> 'application/x-ms-wmd',
		'wmz'		=> 'application/x-ms-wmz',
		'com'		=> 'application/x-msdos-program',
		'exe'		=> 'application/x-msdos-program',
		'bat'		=> 'application/x-msdos-program',
		'dll'		=> 'application/x-msdos-program',
		'msi'		=> 'application/x-msi',
		'nc'		=> 'application/x-netcdf',
		'pac'		=> 'application/x-ns-proxy-autoconfig',
		'dat'		=> 'application/x-ns-proxy-autoconfig',
		'nwc'		=> 'application/x-nwc',
		'o'			=> 'application/x-object',
		'oza'		=> 'application/x-oz-application',
		'p7r'		=> 'application/x-pkcs7-certreqresp',
		'crl'		=> 'application/x-pkcs7-crl',
		'pyc'		=> 'application/x-python-code',
		'pyo'		=> 'application/x-python-code',
		'qgs'		=> 'application/x-qgis',
		'shp'		=> 'application/x-qgis',
		'shx'		=> 'application/x-qgis',
		'qtl'		=> 'application/x-quicktimeplayer',
		'rpm'		=> 'application/x-redhat-package-manager',
		'rb'		=> 'application/x-ruby',
		'sh'		=> 'application/x-sh',
		'shar'		=> 'application/x-shar',
		'swf'		=> 'application/x-shockwave-flash',
		'swfl'		=> 'application/x-shockwave-flash',
		'sit'		=> 'application/x-stuffit',
		'sitx'		=> 'application/x-stuffit',
		'sv4cpio'	=> 'application/x-sv4cpio',
		'sv4crc'	=> 'application/x-sv4crc',
		'tar'		=> 'application/x-tar',
		'tcl'		=> 'application/x-tcl',
		'gf'		=> 'application/x-tex-gf',
		'pk'		=> 'application/x-tex-pk',
		'texinfo'	=> 'application/x-texinfo',
		'texi'		=> 'application/x-texinfo',
		'~'			=> 'application/x-trash',
		'%'			=> 'application/x-trash',
		'bak'		=> 'application/x-trash',
		'old'		=> 'application/x-trash',
		'sik'		=> 'application/x-trash',
		't'			=> 'application/x-troff',
		'tr'		=> 'application/x-troff',
		'roff'		=> 'application/x-troff',
		'man'		=> 'application/x-troff-man',
		'me'		=> 'application/x-troff-me',
		'ms'		=> 'application/x-troff-ms',
		'ustar'		=> 'application/x-ustar	',
		'src'		=> 'application/x-wais-source',
		'wz'		=> 'application/x-wingz',
		'crt'		=> 'application/x-x509-ca-cert',
		'xcf'		=> 'application/x-xcf',
		'fig'		=> 'application/x-xfig',
		'xpi'		=> 'application/x-xpinstall',
		'amr'		=> 'audio/amr',
		'awb'		=> 'audio/amr-wb',
		'amr'		=> 'audio/amr',
		'awb'		=> 'audio/amr-wb',
		'axa'		=> 'audio/annodex',
		'au'		=> 'audio/basic',
		'snd'		=> 'audio/basic',
		'flac'		=> 'audio/flac',
		'mid'		=> 'audio/midi',
		'midi'		=> 'audio/midi',
		'kar'		=> 'audio/midi',
		'mpga'		=> 'audio/mpeg',
		'mpega'		=> 'audio/mpeg',
		'mp2'		=> 'audio/mpeg',
		'mp3'		=> 'audio/mpeg',
		'm4a'		=> 'audio/mpeg',
		'm3u'		=> 'audio/mpegurl',
		'oga'		=> 'audio/ogg',
		'ogg'		=> 'audio/ogg',
		'spx'		=> 'audio/ogg',
		'sid'		=> 'audio/prs.sid',
		'aif'		=> 'audio/x-aiff',
		'aiff'		=> 'audio/x-aiff',
		'aifc'		=> 'audio/x-aiff',
		'gsm'		=> 'audio/x-gsm',
		'wma'		=> 'audio/x-ms-wma',
		'wax'		=> 'audio/x-ms-wax',
		'ra'		=> 'audio/x-realaudio',
		'rm'		=> 'audio/x-pn-realaudio',
		'ram'		=> 'audio/x-pn-realaudio',
		'pls'		=> 'audio/x-scpls',
		'sd2'		=> 'audio/x-sd2',
		'wav'		=> 'audio/x-wav',
		'alc'		=> 'chemical/x-alchemy',
		'cac'		=> 'chemical/x-cache',
		'cache'		=> 'chemical/x-cache',
		'csf'		=> 'chemical/x-cache-csf',
		'cbin'		=> 'chemical/x-cactvs-binary',
		'cascii'	=> 'chemical/x-cactvs-binary',
		'ctab'		=> 'chemical/x-cactvs-binary',
		'cdx'		=> 'chemical/x-cdx',
		'cer'		=> 'chemical/x-cerius',
		'c3d'		=> 'chemical/x-chem3d',
		'chm'		=> 'chemical/x-chemdraw',
		'cif'		=> 'chemical/x-cif',
		'cmdf'		=> 'chemical/x-cmdf',
		'cml'		=> 'chemical/x-cml',
		'cpa'		=> 'chemical/x-compass',
		'bsd'		=> 'chemical/x-crossfire',
		'csml'		=> 'chemical/x-csml',
		'csm'		=> 'chemical/x-csml',
		'ctx'		=> 'chemical/x-ctx',
		'cxf'		=> 'chemical/x-cxf',
		'cef'		=> 'chemical/x-cxf',
		'emb'		=> 'chemical/x-embl-dl-nucleotide',
		'embl'		=> 'chemical/x-embl-dl-nucleotide',
		'spc'		=> 'chemical/x-galactic-spc',
		'inp'		=> 'chemical/x-gamess-input',
		'gam'		=> 'chemical/x-gamess-input',
		'gamin'		=> 'chemical/x-gamess-input',
		'fch'		=> 'chemical/x-gaussian-checkpoint',
		'fchk'		=> 'chemical/x-gaussian-checkpoint',
		'cub'		=> 'chemical/x-gaussian-cube',
		'gau'		=> 'chemical/x-gaussian-input',
		'gjc'		=> 'chemical/x-gaussian-input',
		'gjf'		=> 'chemical/x-gaussian-input',
		'gal'		=> 'chemical/x-gaussian-log',
		'gcg'		=> 'chemical/x-gcg8-sequence',
		'gen'		=> 'chemical/x-genbank',
		'hin'		=> 'chemical/x-hin',
		'istr'		=> 'chemical/x-isostar',
		'ist'		=> 'chemical/x-isostar',
		'jdx'		=> 'chemical/x-jcamp-dx',
		'dx'		=> 'chemical/x-jcamp-dx',
		'kin'		=> 'chemical/x-kinemage',
		'mcm'		=> 'chemical/x-macmolecule',
		'mmd'		=> 'chemical/x-macromodel-input',
		'mmod'		=> 'chemical/x-macromodel-input',
		'mol'		=> 'chemical/x-mdl-molfile',
		'rd'		=> 'chemical/x-mdl-rdfile',
		'rxn'		=> 'chemical/x-mdl-rxnfile',
		'sd'		=> 'chemical/x-mdl-sdfile',
		'sdf'		=> 'chemical/x-mdl-sdfile',
		'tgf'		=> 'chemical/x-mdl-tgf',
		'mcif'		=> 'chemical/x-mmcif',
		'mol2'		=> 'chemical/x-mol2',
		'b'			=> 'chemical/x-molconn-Z',
		'gpt'		=> 'chemical/x-mopac-graph',
		'mop'		=> 'chemical/x-mopac-input',
		'mopcrt'	=> 'chemical/x-mopac-input',
		'mpc'		=> 'chemical/x-mopac-input',
		'zmt'		=> 'chemical/x-mopac-input',
		'moo'		=> 'chemical/x-mopac-out',
		'mvb'		=> 'chemical/x-mopac-vib',
		'asn'		=> 'chemical/x-ncbi-asn1',
		'prt'		=> 'chemical/x-ncbi-asn1-ascii',
		'ent'		=> 'chemical/x-ncbi-asn1-ascii',
		'val'		=> 'chemical/x-ncbi-asn1-binary',
		'aso'		=> 'chemical/x-ncbi-asn1-binary',
		'asn'		=> 'chemical/x-ncbi-asn1-spec',
		'pdb'		=> 'chemical/x-pdb',
		'ent'		=> 'chemical/x-pdb',
		'ros'		=> 'chemical/x-rosdal',
		'sw'		=> 'chemical/x-swissprot',
		'vms'		=> 'chemical/x-vamas-iso14976',
		'vmd'		=> 'chemical/x-vmd',
		'xtel'		=> 'chemical/x-xtel',
		'xyz'		=> 'chemical/x-xyz',
		'gif'		=> 'image/gif',
		'ief'		=> 'image/ief',
		'jpeg'		=> 'image/jpeg',
		'jpg'		=> 'image/jpeg',
		'jpe'		=> 'image/jpeg',
		'pcx'		=> 'image/pcx',
		'png'		=> 'image/png',
		'svg'		=> 'image/svg+xml',
		'svgz'		=> 'image/svg+xml',
		'tiff'		=> 'image/tiff',
		'tif'		=> 'image/tiff',
		'djvu'		=> 'image/vnd.djvu',
		'djv'		=> 'image/vnd.djvu',
		'wbmp'		=> 'image/vnd.wap.wbmp',
		'ras'		=> 'image/x-cmu-raster',
		'cdr'		=> 'image/x-coreldraw',
		'pat'		=> 'image/x-coreldrawpattern',
		'cdt'		=> 'image/x-coreldrawtemplate',
		'cpt'		=> 'image/x-corelphotopaint',
		'ico'		=> 'image/x-icon',
		'art'		=> 'image/x-jg',
		'jng'		=> 'image/x-jng',
		'bmp'		=> 'image/x-ms-bmp',
		'psd'		=> 'image/x-photoshop',
		'pnm'		=> 'image/x-portable-anymap',
		'pbm'		=> 'image/x-portable-bitmap',
		'pgm'		=> 'image/x-portable-graymap',
		'ppm'		=> 'image/x-portable-pixmap',
		'rgb'		=> 'image/x-rgb',
		'xbm'		=> 'image/x-xbitmap',
		'xpm'		=> 'image/x-xpixmap',
		'xwd'		=> 'image/x-xwindowdump',
		'eml'		=> 'message/rfc822',
		'igs'		=> 'model/iges',
		'iges'		=> 'model/iges',
		'msh'		=> 'model/mesh',
		'mesh'		=> 'model/mesh',
		'silo'		=> 'model/mesh',
		'wrl'		=> 'model/vrml',
		'vrml'		=> 'model/vrml',
		'ics'		=> 'text/calendar',
		'icz'		=> 'text/calendar',
		'css'		=> 'text/css',
		'csv'		=> 'text/csv',
		'323'		=> 'text/h323',
		'html'		=> 'text/html',
		'htm'		=> 'ext/html',
		'shtml'		=> 'text/html',
		'uls'		=> 'text/iuls',
		'mml'		=> 'text/mathml',
		'asc'		=> 'text/plain',
		'txt'		=> 'text/plain',
		'text'		=> 'text/plain',
		'pot'		=> 'text/plain',
		'brf'		=> 'text/plain',
		'rtx'		=> 'text/richtext',
		'sct'		=> 'text/scriptlet',
		'wsc'		=> 'text/scriptlet',
		'tm'		=> 'text/texmacs',
		'ts'		=> 'text/texmacs',
		'tsv'		=> 'text/tab-separated-values',
		'jad'		=> 'text/vnd.sun.j2me.app-descriptor',
		'wml'		=> 'text/vnd.wap.wml',
		'wmls'		=> 'text/vnd.wap.wmlscript',
		'bib'		=> 'text/x-bibtex',
		'boo'		=> 'text/x-boo',
		'h++'		=> 'text/x-c++hdr',
		'hpp'		=> 'text/x-c++hdr',
		'hxx'		=> 'text/x-c++hdr',
		'hh'		=> 'text/x-c++hdr',
		'c++'		=> 'text/x-c++src',
		'cpp'		=> 'text/x-c++src',
		'cxx'		=> 'text/x-c++src',
		'cc'		=> 'text/x-c++src',
		'h'			=> 'text/x-chdr',
		'htc'		=> 'text/x-component',
		'csh'		=> 'text/x-csh',
		'c'			=> 'text/x-csrc	',
		'd'			=> 'text/x-dsrc',
		'diff'		=> 'text/x-diff',
		'patch'		=> 'text/x-diff',
		'hs'		=> 'text/x-haskell',
		'java'		=> 'text/x-java',
		'lhs'		=> 'text/x-literate-haskell',
		'moc'		=> 'text/x-moc',
		'p'			=> 'text/x-pascal',
		'pas'		=> 'text/x-pascal',
		'gcd'		=> 'text/x-pcs-gcd',
		'pl'		=> 'text/x-perl',
		'pm'		=> 'text/x-perl',
		'py'		=> 'text/x-python',
		'scala'		=> 'text/x-scala',
		'etx'		=> 'text/x-setext',
		'sh'		=> 'text/x-sh',
		'tcl'		=> 'text/x-tcl',
		'tk'		=> 'text/x-tcl',
		'tex'		=> 'text/x-tex',
		'ltx'		=> 'text/x-tex',
		'sty'		=> 'text/x-tex',
		'cls'		=> 'text/x-tex',
		'vcs'		=> 'text/x-vcalendar',
		'vcf'		=> 'text/x-vcard',
		'3gp'		=> 'video/3gpp',
		'axv'		=> 'video/annodex',
		'dl'		=> 'video/dl',
		'dif'		=> 'video/dv',
		'dv'		=> 'video/dv',
		'fli'		=> 'video/fli',
		'gl'		=> 'video/gl',
		'mpeg'		=> 'video/mpeg',
		'mpg'		=> 'video/mpeg',
		'mpe'		=> 'video/mpeg',
		'mp4'		=> 'video/mp4',
		'qt'		=> 'video/quicktime',
		'mov'		=> 'video/quicktime',
		'ogv'		=> 'video/ogg',
		'mxu'		=> 'video/vnd.mpegurl',
		'flv'		=> 'video/x-flv',
		'lsf'		=> 'video/x-la-asf',
		'lsx'		=> 'video/x-la-asf',
		'mng'		=> 'video/x-mng',
		'asf'		=> 'video/x-ms-asf',
		'asx'		=> 'video/x-ms-asf',
		'wm'		=> 'video/x-ms-wm',
		'wmv'		=> 'video/x-ms-wmv',
		'wmx'		=> 'video/x-ms-wmx',
		'wvx'		=> 'video/x-ms-wvx',
		'avi'		=> 'video/x-msvideo',
		'movie'		=> 'video/x-sgi-movie',
		'mpv'		=> 'video/x-matroska',
		'ice'		=> 'x-conference/x-cooltalk',
		'sisx'		=> 'x-epoc/x-sisx-app',
		'vrm'		=> 'x-world/x-vrml',
		'vrml'		=> 'x-world/x-vrml',
		'wrl'		=> 'x-world/x-vrml',
	);
	
	$ext = end(explode('.', $path));
	
	if (empty($types[$ext]) === false){
		return $types[$ext];
	}
	
	return 'application/octet-stream';
}
The huge list of extensions was taken from the /etc/mime.types file on my laptop :)

you can think of this in the same way as the native mime_content_type, except that it will work all of the time.
Image
Xenilbohl
Posts: 10
Joined: Fri May 06, 2011 7:38 pm

Re: Mime Type Compatibility Function

Post by Xenilbohl »

I think I get what this is but not completely. Could you rephrase what this is in a basic concept.

Thank you.

PS im really happy to see you building a PHP community. It should be great help! :D
Image< my attempt at a logo ;)
User avatar
jacek
Site Admin
Posts: 3262
Joined: Thu May 05, 2011 1:45 pm
Location: UK
Contact:

Re: Mime Type Compatibility Function

Post by jacek »

It works in the exact same way as http://uk.php.net/mime_content_type except that it works around the problem of that function not being available all of the time by trying a few other methods too.
echo file_get_mime('image.png');
would always output image/png, but if you use mime_content_type you would sometimes get an error as the function is not always there.
Image
Dominion
Posts: 32
Joined: Thu May 05, 2011 11:32 pm

Re: Mime Type Compatibility Function

Post by Dominion »

Thanks for this. :)
Carbine
Posts: 58
Joined: Fri May 06, 2011 1:47 pm
Location: UK, Nottinghamshire
Contact:

Re: Mime Type Compatibility Function

Post by Carbine »

This would be useful in my php functions libary when I start it. Thanks for this. Saved me looking for all those file extensions.
Post Reply