| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829 |
- <?php
- App::uses('CakeResponse', 'Network');
- /**
- * Wrapper to be able to read cake core's mime types as well as fix for missing ones
- *
- * @version 1.0
- * @license http://opensource.org/licenses/mit-license.php MIT
- * @author Mark Scherer
- */
- class MimeLib extends CakeResponse {
- protected $_mimeTypesExt = [
- '3dm' => 'x-world/x-3dmf',
- '3dmf' => 'x-world/x-3dmf',
- 'a' => 'application/octet-stream',
- 'aab' => 'application/x-authorware-bin',
- 'aam' => 'application/x-authorware-map',
- 'aas' => 'application/x-authorware-seg',
- 'abc' => 'text/vnd.abc',
- 'acgi' => 'text/html',
- 'afl' => 'video/animaflex',
- 'ai' => 'application/postscript',
- 'aif' => 'audio/aiff',
- 'aif' => 'audio/x-aiff',
- 'aifc' => 'audio/aiff',
- 'aifc' => 'audio/x-aiff',
- 'aiff' => 'audio/aiff',
- 'aiff' => 'audio/x-aiff',
- 'aim' => 'application/x-aim',
- 'aip' => 'text/x-audiosoft-intra',
- 'ani' => 'application/x-navi-animation',
- 'aos' => 'application/x-nokia-9000-communicator-add-on-software',
- 'aps' => 'application/mime',
- 'arc' => 'application/octet-stream',
- 'arj' => 'application/arj',
- 'arj' => 'application/octet-stream',
- 'art' => 'image/x-jg',
- 'asf' => 'video/x-ms-asf',
- 'asm' => 'text/x-asm',
- 'asp' => 'text/asp',
- 'asx' => 'application/x-mplayer2',
- 'asx' => 'video/x-ms-asf',
- 'asx' => 'video/x-ms-asf-plugin',
- 'au' => 'audio/basic',
- 'au' => 'audio/x-au',
- 'avi' => 'application/x-troff-msvideo',
- 'avi' => 'video/avi',
- 'avi' => 'video/msvideo',
- 'avi' => 'video/x-msvideo',
- 'avs' => 'video/avs-video',
- 'bcpio' => 'application/x-bcpio',
- 'bin' => 'application/mac-binary',
- 'bin' => 'application/macbinary',
- 'bin' => 'application/octet-stream',
- 'bin' => 'application/x-binary',
- 'bin' => 'application/x-macbinary',
- 'bm' => 'image/bmp',
- 'bmp' => 'image/bmp',
- 'bmp' => 'image/x-windows-bmp',
- 'boo' => 'application/book',
- 'book' => 'application/book',
- 'boz' => 'application/x-bzip2',
- 'bsh' => 'application/x-bsh',
- 'bz' => 'application/x-bzip',
- 'bz2' => 'application/x-bzip2',
- 'c' => 'text/plain',
- 'c' => 'text/x-c',
- 'c++' => 'text/plain',
- 'cat' => 'application/vnd.ms-pki.seccat',
- 'cc' => 'text/plain',
- 'cc' => 'text/x-c',
- 'ccad' => 'application/clariscad',
- 'cco' => 'application/x-cocoa',
- 'cdf' => 'application/cdf',
- 'cdf' => 'application/x-cdf',
- 'cdf' => 'application/x-netcdf',
- 'cer' => 'application/pkix-cert',
- 'cer' => 'application/x-x509-ca-cert',
- 'cha' => 'application/x-chat',
- 'chat' => 'application/x-chat',
- 'class' => 'application/java',
- 'class' => 'application/java-byte-code',
- 'class' => 'application/x-java-class',
- 'com' => 'application/octet-stream',
- 'com' => 'text/plain',
- 'conf' => 'text/plain',
- 'cpio' => 'application/x-cpio',
- 'cpp' => 'text/x-c',
- 'cpt' => 'application/mac-compactpro',
- 'cpt' => 'application/x-compactpro',
- 'cpt' => 'application/x-cpt',
- 'crl' => 'application/pkcs-crl',
- 'crl' => 'application/pkix-crl',
- 'crt' => 'application/pkix-cert',
- 'crt' => 'application/x-x509-ca-cert',
- 'crt' => 'application/x-x509-user-cert',
- 'csh' => 'application/x-csh',
- 'csh' => 'text/x-script.csh',
- 'css' => 'application/x-pointplus',
- 'css' => 'text/css',
- 'cxx' => 'text/plain',
- 'dcr' => 'application/x-director',
- 'deepv' => 'application/x-deepv',
- 'def' => 'text/plain',
- 'der' => 'application/x-x509-ca-cert',
- 'dif' => 'video/x-dv',
- 'dir' => 'application/x-director',
- 'dl' => 'video/dl',
- 'dl' => 'video/x-dl',
- 'doc' => 'application/msword',
- 'dot' => 'application/msword',
- 'dp' => 'application/commonground',
- 'drw' => 'application/drafting',
- 'dump' => 'application/octet-stream',
- 'dv' => 'video/x-dv',
- 'dvi' => 'application/x-dvi',
- 'dwf' => 'model/vnd.dwf',
- 'dwg' => 'application/acad',
- 'dwg' => 'image/vnd.dwg',
- 'dwg' => 'image/x-dwg',
- 'dxf' => 'application/dxf',
- 'dxf' => 'image/vnd.dwg',
- 'dxf' => 'image/x-dwg',
- 'dxr' => 'application/x-director',
- 'el' => 'text/x-script.elisp',
- 'elc' => 'application/x-bytecode.elisp',
- 'elc' => 'application/x-elc',
- 'env' => 'application/x-envoy',
- 'eps' => 'application/postscript',
- 'es' => 'application/x-esrehber',
- 'etx' => 'text/x-setext',
- 'evy' => 'application/envoy',
- 'evy' => 'application/x-envoy',
- 'exe' => 'application/octet-stream',
- 'f' => 'text/plain',
- 'f' => 'text/x-fortran',
- 'f77' => 'text/x-fortran',
- 'f90' => 'text/plain',
- 'f90' => 'text/x-fortran',
- 'fdf' => 'application/vnd.fdf',
- 'fif' => 'application/fractals',
- 'fif' => 'image/fif',
- 'fli' => 'video/fli',
- 'fli' => 'video/x-fli',
- 'flo' => 'image/florian',
- 'flx' => 'text/vnd.fmi.flexstor',
- 'fmf' => 'video/x-atomic3d-feature',
- 'for' => 'text/plain',
- 'for' => 'text/x-fortran',
- 'fpx' => 'image/vnd.fpx',
- 'fpx' => 'image/vnd.net-fpx',
- 'frl' => 'application/freeloader',
- 'funk' => 'audio/make',
- 'g' => 'text/plain',
- 'g3' => 'image/g3fax',
- 'gif' => 'image/gif',
- 'gl' => 'video/gl',
- 'gl' => 'video/x-gl',
- 'gsd' => 'audio/x-gsm',
- 'gsm' => 'audio/x-gsm',
- 'gsp' => 'application/x-gsp',
- 'gss' => 'application/x-gss',
- 'gtar' => 'application/x-gtar',
- 'gz' => 'application/x-compressed',
- 'gz' => 'application/x-gzip',
- 'gzip' => 'application/x-gzip',
- 'gzip' => 'multipart/x-gzip',
- 'h' => 'text/plain',
- 'h' => 'text/x-h',
- 'hdf' => 'application/x-hdf',
- 'help' => 'application/x-helpfile',
- 'hgl' => 'application/vnd.hp-hpgl',
- 'hh' => 'text/plain',
- 'hh' => 'text/x-h',
- 'hlb' => 'text/x-script',
- 'hlp' => 'application/hlp',
- 'hlp' => 'application/x-helpfile',
- 'hlp' => 'application/x-winhelp',
- 'hpg' => 'application/vnd.hp-hpgl',
- 'hpgl' => 'application/vnd.hp-hpgl',
- 'hqx' => 'application/binhex',
- 'hqx' => 'application/binhex4',
- 'hqx' => 'application/mac-binhex',
- 'hqx' => 'application/mac-binhex40',
- 'hqx' => 'application/x-binhex40',
- 'hqx' => 'application/x-mac-binhex40',
- 'hta' => 'application/hta',
- 'htc' => 'text/x-component',
- 'htmls' => 'text/html',
- 'htt' => 'text/webviewhtml',
- 'htx' => 'text/html',
- 'ice' => 'x-conference/x-cooltalk',
- 'ico' => 'image/x-icon',
- 'ics' => 'application/ics', // important for ipad to properly display ics files
- 'ical' => 'text/calendar',
- 'idc' => 'text/plain',
- 'ief' => 'image/ief',
- 'iefs' => 'image/ief',
- 'ifb' => 'text/calendar',
- 'iges' => 'application/iges',
- 'iges' => 'model/iges',
- 'igs' => 'application/iges',
- 'igs' => 'model/iges',
- 'ima' => 'application/x-ima',
- 'imap' => 'application/x-httpd-imap',
- 'inf' => 'application/inf',
- 'ins' => 'application/x-internett-signup',
- 'ip' => 'application/x-ip2',
- 'isu' => 'video/x-isvideo',
- 'it' => 'audio/it',
- 'iv' => 'application/x-inventor',
- 'ivr' => 'i-world/i-vrml',
- 'ivy' => 'application/x-livescreen',
- 'jam' => 'audio/x-jam',
- 'jav' => 'text/plain',
- 'jav' => 'text/x-java-source',
- 'java' => 'text/plain',
- 'java' => 'text/x-java-source',
- 'jcm' => 'application/x-java-commerce',
- 'jfif' => 'image/jpeg',
- 'jfif' => 'image/pjpeg',
- 'jfif-tbnl' => 'image/jpeg',
- 'jpe' => 'image/jpeg',
- 'jpe' => 'image/pjpeg',
- 'jpeg' => 'image/jpeg',
- 'jpeg' => 'image/pjpeg',
- 'jpg' => 'image/jpeg',
- 'jpg' => 'image/pjpeg',
- 'jps' => 'image/x-jps',
- 'js' => 'text/javascript',
- 'jut' => 'image/jutvision',
- 'kar' => 'audio/midi',
- 'kar' => 'music/x-karaoke',
- 'ksh' => 'application/x-ksh',
- 'ksh' => 'text/x-script.ksh',
- 'la' => 'audio/nspaudio',
- 'la' => 'audio/x-nspaudio',
- 'lam' => 'audio/x-liveaudio',
- 'latex' => 'application/x-latex',
- 'lha' => 'application/lha',
- 'lha' => 'application/octet-stream',
- 'lha' => 'application/x-lha',
- 'lhx' => 'application/octet-stream',
- 'list' => 'text/plain',
- 'lma' => 'audio/nspaudio',
- 'lma' => 'audio/x-nspaudio',
- 'log' => 'text/plain',
- 'lsp' => 'application/x-lisp',
- 'lsp' => 'text/x-script.lisp',
- 'lst' => 'text/plain',
- 'lsx' => 'text/x-la-asf',
- 'ltx' => 'application/x-latex',
- 'lzh' => 'application/octet-stream',
- 'lzh' => 'application/x-lzh',
- 'lzx' => 'application/lzx',
- 'lzx' => 'application/octet-stream',
- 'lzx' => 'application/x-lzx',
- 'm' => 'text/plain',
- 'm' => 'text/x-m',
- 'm1v' => 'video/mpeg',
- 'm2a' => 'audio/mpeg',
- 'm2v' => 'video/mpeg',
- 'm3u' => 'audio/x-mpequrl',
- 'man' => 'application/x-troff-man',
- 'map' => 'application/x-navimap',
- 'mar' => 'text/plain',
- 'mbd' => 'application/mbedlet',
- 'mc$' => 'application/x-magic-cap-package-1.0',
- 'mcd' => 'application/mcad',
- 'mcd' => 'application/x-mathcad',
- 'mcf' => 'image/vasa',
- 'mcf' => 'text/mcf',
- 'mcp' => 'application/netmc',
- 'me' => 'application/x-troff-me',
- 'mht' => 'message/rfc822',
- 'mhtml' => 'message/rfc822',
- 'mid' => 'application/x-midi',
- 'mid' => 'audio/midi',
- 'mid' => 'audio/x-mid',
- 'mid' => 'audio/x-midi',
- 'mid' => 'music/crescendo',
- 'mid' => 'x-music/x-midi',
- 'midi' => 'application/x-midi',
- 'midi' => 'audio/midi',
- 'midi' => 'audio/x-mid',
- 'midi' => 'audio/x-midi',
- 'midi' => 'music/crescendo',
- 'midi' => 'x-music/x-midi',
- 'mif' => 'application/x-frame',
- 'mif' => 'application/x-mif',
- 'mime' => 'message/rfc822',
- 'mime' => 'www/mime',
- 'mjf' => 'audio/x-vnd.audioexplosion.mjuicemediafile',
- 'mjpg' => 'video/x-motion-jpeg',
- 'mm' => 'application/base64',
- 'mm' => 'application/x-meme',
- 'mme' => 'application/base64',
- 'mod' => 'audio/mod',
- 'mod' => 'audio/x-mod',
- 'moov' => 'video/quicktime',
- 'mov' => 'video/quicktime',
- 'movie' => 'video/x-sgi-movie',
- 'mp2' => 'audio/mpeg',
- 'mp2' => 'audio/x-mpeg',
- 'mp2' => 'video/mpeg',
- 'mp2' => 'video/x-mpeg',
- 'mp2' => 'video/x-mpeq2a',
- 'mp3' => 'audio/mpeg3',
- 'mp3' => 'audio/x-mpeg-3',
- 'mp3' => 'video/mpeg',
- 'mp3' => 'video/x-mpeg',
- 'mpa' => 'audio/mpeg',
- 'mpa' => 'video/mpeg',
- 'mpc' => 'application/x-project',
- 'mpe' => 'video/mpeg',
- 'mpeg' => 'video/mpeg',
- 'mpg' => 'audio/mpeg',
- 'mpg' => 'video/mpeg',
- 'mpga' => 'audio/mpeg',
- 'mpp' => 'application/vnd.ms-project',
- 'mpt' => 'application/x-project',
- 'mpv' => 'application/x-project',
- 'mpx' => 'application/x-project',
- 'mrc' => 'application/marc',
- 'ms' => 'application/x-troff-ms',
- 'mv' => 'video/x-sgi-movie',
- 'my' => 'audio/make',
- 'mzz' => 'application/x-vnd.audioexplosion.mzz',
- 'nap' => 'image/naplps',
- 'naplps' => 'image/naplps',
- 'nc' => 'application/x-netcdf',
- 'ncm' => 'application/vnd.nokia.configuration-message',
- 'nif' => 'image/x-niff',
- 'niff' => 'image/x-niff',
- 'nix' => 'application/x-mix-transfer',
- 'nsc' => 'application/x-conference',
- 'nvd' => 'application/x-navidoc',
- 'o' => 'application/octet-stream',
- 'oda' => 'application/oda',
- 'omc' => 'application/x-omc',
- 'omcd' => 'application/x-omcdatamaker',
- 'omcr' => 'application/x-omcregerator',
- 'p' => 'text/x-pascal',
- 'p10' => 'application/pkcs10',
- 'p10' => 'application/x-pkcs10',
- 'p12' => 'application/pkcs-12',
- 'p12' => 'application/x-pkcs12',
- 'p7a' => 'application/x-pkcs7-signature',
- 'p7c' => 'application/pkcs7-mime',
- 'p7c' => 'application/x-pkcs7-mime',
- 'p7m' => 'application/pkcs7-mime',
- 'p7m' => 'application/x-pkcs7-mime',
- 'p7r' => 'application/x-pkcs7-certreqresp',
- 'p7s' => 'application/pkcs7-signature',
- 'part' => 'application/pro_eng',
- 'pas' => 'text/pascal',
- 'pbm' => 'image/x-portable-bitmap',
- 'pcl' => 'application/vnd.hp-pcl',
- 'pcl' => 'application/x-pcl',
- 'pct' => 'image/x-pict',
- 'pcx' => 'image/x-pcx',
- 'pdb' => 'chemical/x-pdb',
- 'pdf' => 'application/pdf',
- 'pfunk' => 'audio/make',
- 'pfunk' => 'audio/make.my.funk',
- 'pgm' => 'image/x-portable-graymap',
- 'pgm' => 'image/x-portable-greymap',
- 'pic' => 'image/pict',
- 'pict' => 'image/pict',
- 'pkg' => 'application/x-newton-compatible-pkg',
- 'pko' => 'application/vnd.ms-pki.pko',
- 'pl' => 'text/plain',
- 'pl' => 'text/x-script.perl',
- 'plx' => 'application/x-pixclscript',
- 'pm' => 'image/x-xpixmap',
- 'pm' => 'text/x-script.perl-module',
- 'pm4' => 'application/x-pagemaker',
- 'pm5' => 'application/x-pagemaker',
- 'png' => 'image/png',
- 'pnm' => 'application/x-portable-anymap',
- 'pnm' => 'image/x-portable-anymap',
- 'pot' => 'application/mspowerpoint',
- 'pot' => 'application/vnd.ms-powerpoint',
- 'pov' => 'model/x-pov',
- 'ppa' => 'application/vnd.ms-powerpoint',
- 'ppm' => 'image/x-portable-pixmap',
- 'pps' => 'application/mspowerpoint',
- 'pps' => 'application/vnd.ms-powerpoint',
- 'ppt' => 'application/mspowerpoint',
- 'ppt' => 'application/powerpoint',
- 'ppt' => 'application/vnd.ms-powerpoint',
- 'ppt' => 'application/x-mspowerpoint',
- 'ppz' => 'application/mspowerpoint',
- 'pre' => 'application/x-freelance',
- 'prt' => 'application/pro_eng',
- 'ps' => 'application/postscript',
- 'psd' => 'application/octet-stream',
- 'pvu' => 'paleovu/x-pv',
- 'pwz' => 'application/vnd.ms-powerpoint',
- 'py' => 'text/x-script.phyton',
- 'pyc' => 'applicaiton/x-bytecode.python',
- 'qcp' => 'audio/vnd.qcelp',
- 'qd3' => 'x-world/x-3dmf',
- 'qd3d' => 'x-world/x-3dmf',
- 'qif' => 'image/x-quicktime',
- 'qt' => 'video/quicktime',
- 'qtc' => 'video/x-qtc',
- 'qti' => 'image/x-quicktime',
- 'qtif' => 'image/x-quicktime',
- 'ra' => 'audio/x-pn-realaudio',
- 'ra' => 'audio/x-pn-realaudio-plugin',
- 'ra' => 'audio/x-realaudio',
- 'ram' => 'audio/x-pn-realaudio',
- 'ras' => 'application/x-cmu-raster',
- 'ras' => 'image/cmu-raster',
- 'ras' => 'image/x-cmu-raster',
- 'rast' => 'image/cmu-raster',
- 'rexx' => 'text/x-script.rexx',
- 'rf' => 'image/vnd.rn-realflash',
- 'rgb' => 'image/x-rgb',
- 'rm' => 'application/vnd.rn-realmedia',
- 'rm' => 'audio/x-pn-realaudio',
- 'rmi' => 'audio/mid',
- 'rmm' => 'audio/x-pn-realaudio',
- 'rmp' => 'audio/x-pn-realaudio',
- 'rmp' => 'audio/x-pn-realaudio-plugin',
- 'rng' => 'application/ringing-tones',
- 'rng' => 'application/vnd.nokia.ringing-tone',
- 'rnx' => 'application/vnd.rn-realplayer',
- 'roff' => 'application/x-troff',
- 'rp' => 'image/vnd.rn-realpix',
- 'rpm' => 'audio/x-pn-realaudio-plugin',
- 'rt' => 'text/richtext',
- 'rt' => 'text/vnd.rn-realtext',
- 'rtf' => 'application/rtf',
- 'rtf' => 'application/x-rtf',
- 'rtf' => 'text/richtext',
- 'rtx' => 'application/rtf',
- 'rtx' => 'text/richtext',
- 'rv' => 'video/vnd.rn-realvideo',
- 's' => 'text/x-asm',
- 's3m' => 'audio/s3m',
- 'saveme' => 'application/octet-stream',
- 'sbk' => 'application/x-tbook',
- 'scm' => 'application/x-lotusscreencam',
- 'scm' => 'text/x-script.guile',
- 'scm' => 'text/x-script.scheme',
- 'scm' => 'video/x-scm',
- 'sdml' => 'text/plain',
- 'sdp' => 'application/sdp',
- 'sdp' => 'application/x-sdp',
- 'sdr' => 'application/sounder',
- 'sea' => 'application/sea',
- 'sea' => 'application/x-sea',
- 'set' => 'application/set',
- 'sgm' => 'text/sgml',
- 'sgm' => 'text/x-sgml',
- 'sgml' => 'text/sgml',
- 'sgml' => 'text/x-sgml',
- 'sh' => 'application/x-bsh',
- 'sh' => 'application/x-sh',
- 'sh' => 'application/x-shar',
- 'sh' => 'text/x-script.sh',
- 'shar' => 'application/x-bsh',
- 'shar' => 'application/x-shar',
- 'shtml' => 'text/html',
- 'sid' => 'audio/x-psid',
- 'sit' => 'application/x-sit',
- 'sit' => 'application/x-stuffit',
- 'skd' => 'application/x-koan',
- 'skm' => 'application/x-koan',
- 'skp' => 'application/x-koan',
- 'skt' => 'application/x-koan',
- 'sl' => 'application/x-seelogo',
- 'smi' => 'application/smil',
- 'smil' => 'application/smil',
- 'snd' => 'audio/basic',
- 'snd' => 'audio/x-adpcm',
- 'sol' => 'application/solids',
- 'spc' => 'application/x-pkcs7-certificates',
- 'spc' => 'text/x-speech',
- 'spl' => 'application/futuresplash',
- 'spr' => 'application/x-sprite',
- 'sprite' => 'application/x-sprite',
- 'src' => 'application/x-wais-source',
- 'ssi' => 'text/x-server-parsed-html',
- 'ssm' => 'application/streamingmedia',
- 'sst' => 'application/vnd.ms-pki.certstore',
- 'step' => 'application/step',
- 'stl' => 'application/sla',
- 'stl' => 'application/vnd.ms-pki.stl',
- 'stl' => 'application/x-navistyle',
- 'stp' => 'application/step',
- 'sv4cpio' => 'application/x-sv4cpio',
- 'sv4crc' => 'application/x-sv4crc',
- 'svf' => 'image/vnd.dwg',
- 'svf' => 'image/x-dwg',
- 'svr' => 'application/x-world',
- 'svr' => 'x-world/x-svr',
- 'swf' => 'application/x-shockwave-flash',
- 't' => 'application/x-troff',
- 'talk' => 'text/x-speech',
- 'tar' => 'application/x-tar',
- 'tbk' => 'application/toolbook',
- 'tbk' => 'application/x-tbook',
- 'tcl' => 'application/x-tcl',
- 'tcl' => 'text/x-script.tcl',
- 'tcsh' => 'text/x-script.tcsh',
- 'tex' => 'application/x-tex',
- 'texi' => 'application/x-texinfo',
- 'texinfo' => 'application/x-texinfo',
- 'text' => 'application/plain',
- 'text' => 'text/plain',
- 'tgz' => 'application/gnutar',
- 'tgz' => 'application/x-compressed',
- 'tif' => 'image/tiff',
- 'tif' => 'image/x-tiff',
- 'tiff' => 'image/tiff',
- 'tiff' => 'image/x-tiff',
- 'tr' => 'application/x-troff',
- 'tsi' => 'audio/tsp-audio',
- 'tsp' => 'application/dsptype',
- 'tsp' => 'audio/tsplayer',
- 'tsv' => 'text/tab-separated-values',
- 'turbot' => 'image/florian',
- 'txt' => 'text/plain',
- 'uil' => 'text/x-uil',
- 'uni' => 'text/uri-list',
- 'unis' => 'text/uri-list',
- 'unv' => 'application/i-deas',
- 'uri' => 'text/uri-list',
- 'uris' => 'text/uri-list',
- 'ustar' => 'application/x-ustar',
- 'ustar' => 'multipart/x-ustar',
- 'uu' => 'application/octet-stream',
- 'uu' => 'text/x-uuencode',
- 'uue' => 'text/x-uuencode',
- 'vcd' => 'application/x-cdlink',
- 'vcs' => 'text/x-vcalendar',
- 'vda' => 'application/vda',
- 'vdo' => 'video/vdo',
- 'vew' => 'application/groupwise',
- 'viv' => 'video/vivo',
- 'viv' => 'video/vnd.vivo',
- 'vivo' => 'video/vivo',
- 'vivo' => 'video/vnd.vivo',
- 'vmd' => 'application/vocaltec-media-desc',
- 'vmf' => 'application/vocaltec-media-file',
- 'voc' => 'audio/voc',
- 'voc' => 'audio/x-voc',
- 'vos' => 'video/vosaic',
- 'vox' => 'audio/voxware',
- 'vqe' => 'audio/x-twinvq-plugin',
- 'vqf' => 'audio/x-twinvq',
- 'vql' => 'audio/x-twinvq-plugin',
- 'vrml' => 'application/x-vrml',
- 'vrml' => 'model/vrml',
- 'vrml' => 'x-world/x-vrml',
- 'vrt' => 'x-world/x-vrt',
- 'vsd' => 'application/x-visio',
- 'vst' => 'application/x-visio',
- 'vsw' => 'application/x-visio',
- 'w60' => 'application/wordperfect6.0',
- 'w61' => 'application/wordperfect6.1',
- 'w6w' => 'application/msword',
- 'wav' => 'audio/wav',
- 'wav' => 'audio/x-wav',
- 'wb1' => 'application/x-qpro',
- 'wbmp' => 'image/vnd.wap.wbmp',
- 'web' => 'application/vnd.xara',
- 'wiz' => 'application/msword',
- 'wk1' => 'application/x-123',
- 'wmf' => 'windows/metafile',
- 'wml' => 'text/vnd.wap.wml',
- 'wmlc' => 'application/vnd.wap.wmlc',
- 'wmls' => 'text/vnd.wap.wmlscript',
- 'wmlsc' => 'application/vnd.wap.wmlscriptc',
- 'word' => 'application/msword',
- 'wp' => 'application/wordperfect',
- 'wp5' => 'application/wordperfect',
- 'wp5' => 'application/wordperfect6.0',
- 'wp6' => 'application/wordperfect',
- 'wpd' => 'application/wordperfect',
- 'wpd' => 'application/x-wpwin',
- 'wq1' => 'application/x-lotus',
- 'wri' => 'application/mswrite',
- 'wri' => 'application/x-wri',
- 'wrl' => 'application/x-world',
- 'wrl' => 'model/vrml',
- 'wrl' => 'x-world/x-vrml',
- 'wrz' => 'model/vrml',
- 'wrz' => 'x-world/x-vrml',
- 'wsc' => 'text/scriplet',
- 'wsrc' => 'application/x-wais-source',
- 'wtk' => 'application/x-wintalk',
- 'xbm' => 'image/x-xbitmap',
- 'xbm' => 'image/x-xbm',
- 'xbm' => 'image/xbm',
- 'xdr' => 'video/x-amt-demorun',
- 'xgz' => 'xgl/drawing',
- 'xif' => 'image/vnd.xiff',
- 'xl' => 'application/excel',
- 'xla' => 'application/excel',
- 'xla' => 'application/x-excel',
- 'xla' => 'application/x-msexcel',
- 'xlb' => 'application/excel',
- 'xlb' => 'application/vnd.ms-excel',
- 'xlb' => 'application/x-excel',
- 'xlc' => 'application/excel',
- 'xlc' => 'application/vnd.ms-excel',
- 'xlc' => 'application/x-excel',
- 'xld' => 'application/excel',
- 'xld' => 'application/x-excel',
- 'xlk' => 'application/excel',
- 'xlk' => 'application/x-excel',
- 'xll' => 'application/excel',
- 'xll' => 'application/vnd.ms-excel',
- 'xll' => 'application/x-excel',
- 'xlm' => 'application/excel',
- 'xlm' => 'application/vnd.ms-excel',
- 'xlm' => 'application/x-excel',
- 'xls' => 'application/excel',
- 'xls' => 'application/vnd.ms-excel',
- 'xls' => 'application/x-excel',
- 'xls' => 'application/x-msexcel',
- 'xlt' => 'application/excel',
- 'xlt' => 'application/x-excel',
- 'xlv' => 'application/excel',
- 'xlv' => 'application/x-excel',
- 'xlw' => 'application/excel',
- 'xlw' => 'application/vnd.ms-excel',
- 'xlw' => 'application/x-excel',
- 'xlw' => 'application/x-msexcel',
- 'xm' => 'audio/xm',
- 'xml' => 'application/xml',
- 'xml' => 'text/xml',
- 'xmz' => 'xgl/movie',
- 'xpix' => 'application/x-vnd.ls-xpix',
- 'xpm' => 'image/x-xpixmap',
- 'xpm' => 'image/xpm',
- 'x-png' => 'image/png',
- 'xsr' => 'video/x-amt-showrun',
- 'xwd' => 'image/x-xwd',
- 'xwd' => 'image/x-xwindowdump',
- 'xyz' => 'chemical/x-pdb',
- 'z' => ['application/x-compress', 'application/x-compressed'],
- 'zip' => 'application/x-compressed',
- 'zip' => 'application/x-zip-compressed',
- 'zip' => 'application/zip',
- 'zip' => 'multipart/x-zip',
- 'zoo' => 'application/octet-stream',
- 'zsh' => 'text/x-script.zsh',
- 'txt' => 'text/plain',
- 'php' => 'application/x-httpd-php',
- 'phps' => 'application/x-httpd-phps',
- 'css' => 'text/css',
- 'js' => 'application/javascript',
- 'json' => 'application/json',
- 'xml' => 'application/xml',
- 'swf' => 'application/x-shockwave-flash',
- 'flv' => 'video/x-flv',
- 'asc' => 'text/plain',
- 'atom' => 'application/atom+xml',
- 'bcpio' => 'application/x-bcpio',
- 'png' => 'image/png',
- 'jpe' => 'image/jpeg',
- 'jpeg' => 'image/jpeg',
- 'jpg' => 'image/jpeg',
- 'gif' => 'image/gif',
- 'bmp' => 'image/bmp',
- 'ico' => 'image/vnd.microsoft.icon',
- 'tiff' => 'image/tiff',
- 'tif' => 'image/tiff',
- 'svg' => 'image/svg+xml',
- 'svgz' => 'image/svg+xml',
- 'zip' => 'application/zip',
- 'rar' => 'application/x-rar-compressed',
- 'exe' => 'application/x-msdownload',
- 'msi' => 'application/x-msdownload',
- 'cab' => 'application/vnd.ms-cab-compressed',
- 'mp3' => 'audio/mpeg',
- 'qt' => 'video/quicktime',
- 'mov' => 'video/quicktime',
- 'au' => 'audio/basic',
- 'avi' => 'video/x-msvideo',
- 'pdf' => 'application/pdf',
- 'psd' => 'image/vnd.adobe.photoshop',
- 'ai' => 'application/postscript',
- 'eps' => 'application/postscript',
- 'ps' => 'application/postscript',
- 'aif' => 'audio/x-aiff',
- 'aifc' => 'audio/x-aiff',
- 'aiff' => 'audio/x-aiff',
- 'doc' => 'application/msword',
- 'rtf' => 'application/rtf',
- 'xls' => 'application/vnd.ms-excel',
- 'ppt' => 'application/vnd.ms-powerpoint',
- 'odt' => 'application/vnd.oasis.opendocument.text',
- 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
- 'swf' => ['application/x-shockwave-flash', 'application/x-shockwave-flash2-preview', 'application/futuresplash', 'image/vnd.rn-realflash']
- ];
- /**
- * Override constructor
- */
- public function __construct() {
- }
- /**
- * Get all mime types that are supported right now
- *
- * @return array
- */
- public function getMimeTypes($coreHasPrecedence = false) {
- if ($coreHasPrecedence) {
- return $this->_mimeTypes += $this->_mimeTypesExt;
- }
- return $this->_mimeTypesExt += $this->_mimeTypes;
- }
- /**
- * Returns the primary mime type definition for an alias
- *
- * e.g `getMimeType('pdf'); // returns 'application/pdf'`
- *
- * @param string $alias the content type alias to map
- * @param bool $primaryOnly
- * @param bool $coreHasPrecedence
- * @return mixed string mapped mime type or false if $alias is not mapped
- */
- public function getMimeType($alias, $primaryOnly = true, $coreHasPrecedence = false) {
- if (empty($this->_mimeTypeTmp)) {
- $this->_mimeTypesTmp = $this->getMimeTypes($coreHasPrecedence);
- }
- if (!isset($this->_mimeTypesTmp[$alias])) {
- return false;
- }
- $mimeType = $this->_mimeTypesTmp[$alias];
- if ($primaryOnly && is_array($mimeType)) {
- $mimeType = array_shift($mimeType);
- }
- return $mimeType;
- }
- /**
- * Maps a content-type back to an alias
- *
- * e.g `mapType('application/pdf'); // returns 'pdf'`
- *
- * @param mixed $ctype Either a string content type to map, or an array of types.
- * @return mixed Aliases for the types provided.
- */
- public function mapType($ctype) {
- return parent::mapType($ctype);
- }
- /**
- * Retrieve the corresponding MIME type, if one exists
- *
- * @param String $file File Name (relative location such as "image_test.jpg" or full "http://site.com/path/to/image_test.jpg")
- * @return String MIMEType - The type of the file passed in the argument
- */
- public function extractMimeType($file = null) {
- if (!is_file($file)) {
- return false;
- }
- /**
- * Attempts to retrieve file info from FINFO
- * If FINFO functions are not available then try to retrieve MIME type from pre-defined MIMEs
- * If MIME type doesn't exist, then try (as a last resort) to use the (deprecated) mime_content_type function
- * If all else fails, just return application/octet-stream
- */
- if (!function_exists("finfo_open")) {
- if (function_exists("mime_content_type")) {
- $type = mime_content_type($file);
- if (!empty($type)) {
- return $type;
- }
- }
- $extension = $this->_getExtension($file);
- if ($mimeType = $this->getMimeType($extension)) {
- return $mimeType;
- }
- return "application/octet-stream";
- }
- $finfo = finfo_open(FILEINFO_MIME_TYPE);
- $mimeType = finfo_file($finfo, $file);
- finfo_close($finfo);
- return $mimeType;
- }
- /**
- * Get encoding.
- *
- * @param string $file
- * @param string $default
- * @return void
- */
- public function getEncoding($file = null, $default = 'utf-8') {
- if (!function_exists("finfo_open")) {
- return $default;
- }
- $finfo = finfo_open(FILEINFO_MIME_ENCODING);
- $encoding = finfo_file($finfo, $file);
- finfo_close($finfo);
- if ($encoding !== false) {
- return $encoding;
- }
- return $default;
- }
- /**
- * Gets the file extention from a string
- *
- * @param String $file The full file name
- * @return String ext The file extension
- */
- protected function _getExtension($file = null) {
- if ($file !== null) {
- $pieces = explode('.', $file);
- $ext = strtolower(array_pop($pieces));
- return $ext;
- }
- return false;
- }
- }
|