MimeType.php 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237
  1. <?php
  2. declare(strict_types=1);
  3. namespace GuzzleHttp\Psr7;
  4. final class MimeType
  5. {
  6. private const MIME_TYPES = [
  7. '1km' => 'application/vnd.1000minds.decision-model+xml',
  8. '3dml' => 'text/vnd.in3d.3dml',
  9. '3ds' => 'image/x-3ds',
  10. '3g2' => 'video/3gpp2',
  11. '3gp' => 'video/3gp',
  12. '3gpp' => 'video/3gpp',
  13. '3mf' => 'model/3mf',
  14. '7z' => 'application/x-7z-compressed',
  15. '7zip' => 'application/x-7z-compressed',
  16. '123' => 'application/vnd.lotus-1-2-3',
  17. 'aab' => 'application/x-authorware-bin',
  18. 'aac' => 'audio/x-acc',
  19. 'aam' => 'application/x-authorware-map',
  20. 'aas' => 'application/x-authorware-seg',
  21. 'abw' => 'application/x-abiword',
  22. 'ac' => 'application/vnd.nokia.n-gage.ac+xml',
  23. 'ac3' => 'audio/ac3',
  24. 'acc' => 'application/vnd.americandynamics.acc',
  25. 'ace' => 'application/x-ace-compressed',
  26. 'acu' => 'application/vnd.acucobol',
  27. 'acutc' => 'application/vnd.acucorp',
  28. 'adp' => 'audio/adpcm',
  29. 'aep' => 'application/vnd.audiograph',
  30. 'afm' => 'application/x-font-type1',
  31. 'afp' => 'application/vnd.ibm.modcap',
  32. 'age' => 'application/vnd.age',
  33. 'ahead' => 'application/vnd.ahead.space',
  34. 'ai' => 'application/pdf',
  35. 'aif' => 'audio/x-aiff',
  36. 'aifc' => 'audio/x-aiff',
  37. 'aiff' => 'audio/x-aiff',
  38. 'air' => 'application/vnd.adobe.air-application-installer-package+zip',
  39. 'ait' => 'application/vnd.dvb.ait',
  40. 'ami' => 'application/vnd.amiga.ami',
  41. 'amr' => 'audio/amr',
  42. 'apk' => 'application/vnd.android.package-archive',
  43. 'apng' => 'image/apng',
  44. 'appcache' => 'text/cache-manifest',
  45. 'application' => 'application/x-ms-application',
  46. 'apr' => 'application/vnd.lotus-approach',
  47. 'arc' => 'application/x-freearc',
  48. 'arj' => 'application/x-arj',
  49. 'asc' => 'application/pgp-signature',
  50. 'asf' => 'video/x-ms-asf',
  51. 'asm' => 'text/x-asm',
  52. 'aso' => 'application/vnd.accpac.simply.aso',
  53. 'asx' => 'video/x-ms-asf',
  54. 'atc' => 'application/vnd.acucorp',
  55. 'atom' => 'application/atom+xml',
  56. 'atomcat' => 'application/atomcat+xml',
  57. 'atomdeleted' => 'application/atomdeleted+xml',
  58. 'atomsvc' => 'application/atomsvc+xml',
  59. 'atx' => 'application/vnd.antix.game-component',
  60. 'au' => 'audio/x-au',
  61. 'avci' => 'image/avci',
  62. 'avcs' => 'image/avcs',
  63. 'avi' => 'video/x-msvideo',
  64. 'avif' => 'image/avif',
  65. 'aw' => 'application/applixware',
  66. 'azf' => 'application/vnd.airzip.filesecure.azf',
  67. 'azs' => 'application/vnd.airzip.filesecure.azs',
  68. 'azv' => 'image/vnd.airzip.accelerator.azv',
  69. 'azw' => 'application/vnd.amazon.ebook',
  70. 'b16' => 'image/vnd.pco.b16',
  71. 'bat' => 'application/x-msdownload',
  72. 'bcpio' => 'application/x-bcpio',
  73. 'bdf' => 'application/x-font-bdf',
  74. 'bdm' => 'application/vnd.syncml.dm+wbxml',
  75. 'bdoc' => 'application/x-bdoc',
  76. 'bed' => 'application/vnd.realvnc.bed',
  77. 'bh2' => 'application/vnd.fujitsu.oasysprs',
  78. 'bin' => 'application/octet-stream',
  79. 'blb' => 'application/x-blorb',
  80. 'blorb' => 'application/x-blorb',
  81. 'bmi' => 'application/vnd.bmi',
  82. 'bmml' => 'application/vnd.balsamiq.bmml+xml',
  83. 'bmp' => 'image/bmp',
  84. 'book' => 'application/vnd.framemaker',
  85. 'box' => 'application/vnd.previewsystems.box',
  86. 'boz' => 'application/x-bzip2',
  87. 'bpk' => 'application/octet-stream',
  88. 'bpmn' => 'application/octet-stream',
  89. 'bsp' => 'model/vnd.valve.source.compiled-map',
  90. 'btif' => 'image/prs.btif',
  91. 'buffer' => 'application/octet-stream',
  92. 'bz' => 'application/x-bzip',
  93. 'bz2' => 'application/x-bzip2',
  94. 'c' => 'text/x-c',
  95. 'c4d' => 'application/vnd.clonk.c4group',
  96. 'c4f' => 'application/vnd.clonk.c4group',
  97. 'c4g' => 'application/vnd.clonk.c4group',
  98. 'c4p' => 'application/vnd.clonk.c4group',
  99. 'c4u' => 'application/vnd.clonk.c4group',
  100. 'c11amc' => 'application/vnd.cluetrust.cartomobile-config',
  101. 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg',
  102. 'cab' => 'application/vnd.ms-cab-compressed',
  103. 'caf' => 'audio/x-caf',
  104. 'cap' => 'application/vnd.tcpdump.pcap',
  105. 'car' => 'application/vnd.curl.car',
  106. 'cat' => 'application/vnd.ms-pki.seccat',
  107. 'cb7' => 'application/x-cbr',
  108. 'cba' => 'application/x-cbr',
  109. 'cbr' => 'application/x-cbr',
  110. 'cbt' => 'application/x-cbr',
  111. 'cbz' => 'application/x-cbr',
  112. 'cc' => 'text/x-c',
  113. 'cco' => 'application/x-cocoa',
  114. 'cct' => 'application/x-director',
  115. 'ccxml' => 'application/ccxml+xml',
  116. 'cdbcmsg' => 'application/vnd.contact.cmsg',
  117. 'cdf' => 'application/x-netcdf',
  118. 'cdfx' => 'application/cdfx+xml',
  119. 'cdkey' => 'application/vnd.mediastation.cdkey',
  120. 'cdmia' => 'application/cdmi-capability',
  121. 'cdmic' => 'application/cdmi-container',
  122. 'cdmid' => 'application/cdmi-domain',
  123. 'cdmio' => 'application/cdmi-object',
  124. 'cdmiq' => 'application/cdmi-queue',
  125. 'cdr' => 'application/cdr',
  126. 'cdx' => 'chemical/x-cdx',
  127. 'cdxml' => 'application/vnd.chemdraw+xml',
  128. 'cdy' => 'application/vnd.cinderella',
  129. 'cer' => 'application/pkix-cert',
  130. 'cfs' => 'application/x-cfs-compressed',
  131. 'cgm' => 'image/cgm',
  132. 'chat' => 'application/x-chat',
  133. 'chm' => 'application/vnd.ms-htmlhelp',
  134. 'chrt' => 'application/vnd.kde.kchart',
  135. 'cif' => 'chemical/x-cif',
  136. 'cii' => 'application/vnd.anser-web-certificate-issue-initiation',
  137. 'cil' => 'application/vnd.ms-artgalry',
  138. 'cjs' => 'application/node',
  139. 'cla' => 'application/vnd.claymore',
  140. 'class' => 'application/octet-stream',
  141. 'clkk' => 'application/vnd.crick.clicker.keyboard',
  142. 'clkp' => 'application/vnd.crick.clicker.palette',
  143. 'clkt' => 'application/vnd.crick.clicker.template',
  144. 'clkw' => 'application/vnd.crick.clicker.wordbank',
  145. 'clkx' => 'application/vnd.crick.clicker',
  146. 'clp' => 'application/x-msclip',
  147. 'cmc' => 'application/vnd.cosmocaller',
  148. 'cmdf' => 'chemical/x-cmdf',
  149. 'cml' => 'chemical/x-cml',
  150. 'cmp' => 'application/vnd.yellowriver-custom-menu',
  151. 'cmx' => 'image/x-cmx',
  152. 'cod' => 'application/vnd.rim.cod',
  153. 'coffee' => 'text/coffeescript',
  154. 'com' => 'application/x-msdownload',
  155. 'conf' => 'text/plain',
  156. 'cpio' => 'application/x-cpio',
  157. 'cpl' => 'application/cpl+xml',
  158. 'cpp' => 'text/x-c',
  159. 'cpt' => 'application/mac-compactpro',
  160. 'crd' => 'application/x-mscardfile',
  161. 'crl' => 'application/pkix-crl',
  162. 'crt' => 'application/x-x509-ca-cert',
  163. 'crx' => 'application/x-chrome-extension',
  164. 'cryptonote' => 'application/vnd.rig.cryptonote',
  165. 'csh' => 'application/x-csh',
  166. 'csl' => 'application/vnd.citationstyles.style+xml',
  167. 'csml' => 'chemical/x-csml',
  168. 'csp' => 'application/vnd.commonspace',
  169. 'csr' => 'application/octet-stream',
  170. 'css' => 'text/css',
  171. 'cst' => 'application/x-director',
  172. 'csv' => 'text/csv',
  173. 'cu' => 'application/cu-seeme',
  174. 'curl' => 'text/vnd.curl',
  175. 'cww' => 'application/prs.cww',
  176. 'cxt' => 'application/x-director',
  177. 'cxx' => 'text/x-c',
  178. 'dae' => 'model/vnd.collada+xml',
  179. 'daf' => 'application/vnd.mobius.daf',
  180. 'dart' => 'application/vnd.dart',
  181. 'dataless' => 'application/vnd.fdsn.seed',
  182. 'davmount' => 'application/davmount+xml',
  183. 'dbf' => 'application/vnd.dbf',
  184. 'dbk' => 'application/docbook+xml',
  185. 'dcr' => 'application/x-director',
  186. 'dcurl' => 'text/vnd.curl.dcurl',
  187. 'dd2' => 'application/vnd.oma.dd2+xml',
  188. 'ddd' => 'application/vnd.fujixerox.ddd',
  189. 'ddf' => 'application/vnd.syncml.dmddf+xml',
  190. 'dds' => 'image/vnd.ms-dds',
  191. 'deb' => 'application/x-debian-package',
  192. 'def' => 'text/plain',
  193. 'deploy' => 'application/octet-stream',
  194. 'der' => 'application/x-x509-ca-cert',
  195. 'dfac' => 'application/vnd.dreamfactory',
  196. 'dgc' => 'application/x-dgc-compressed',
  197. 'dic' => 'text/x-c',
  198. 'dir' => 'application/x-director',
  199. 'dis' => 'application/vnd.mobius.dis',
  200. 'disposition-notification' => 'message/disposition-notification',
  201. 'dist' => 'application/octet-stream',
  202. 'distz' => 'application/octet-stream',
  203. 'djv' => 'image/vnd.djvu',
  204. 'djvu' => 'image/vnd.djvu',
  205. 'dll' => 'application/octet-stream',
  206. 'dmg' => 'application/x-apple-diskimage',
  207. 'dmn' => 'application/octet-stream',
  208. 'dmp' => 'application/vnd.tcpdump.pcap',
  209. 'dms' => 'application/octet-stream',
  210. 'dna' => 'application/vnd.dna',
  211. 'doc' => 'application/msword',
  212. 'docm' => 'application/vnd.ms-word.template.macroEnabled.12',
  213. 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
  214. 'dot' => 'application/msword',
  215. 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
  216. 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
  217. 'dp' => 'application/vnd.osgi.dp',
  218. 'dpg' => 'application/vnd.dpgraph',
  219. 'dra' => 'audio/vnd.dra',
  220. 'drle' => 'image/dicom-rle',
  221. 'dsc' => 'text/prs.lines.tag',
  222. 'dssc' => 'application/dssc+der',
  223. 'dtb' => 'application/x-dtbook+xml',
  224. 'dtd' => 'application/xml-dtd',
  225. 'dts' => 'audio/vnd.dts',
  226. 'dtshd' => 'audio/vnd.dts.hd',
  227. 'dump' => 'application/octet-stream',
  228. 'dvb' => 'video/vnd.dvb.file',
  229. 'dvi' => 'application/x-dvi',
  230. 'dwd' => 'application/atsc-dwd+xml',
  231. 'dwf' => 'model/vnd.dwf',
  232. 'dwg' => 'image/vnd.dwg',
  233. 'dxf' => 'image/vnd.dxf',
  234. 'dxp' => 'application/vnd.spotfire.dxp',
  235. 'dxr' => 'application/x-director',
  236. 'ear' => 'application/java-archive',
  237. 'ecelp4800' => 'audio/vnd.nuera.ecelp4800',
  238. 'ecelp7470' => 'audio/vnd.nuera.ecelp7470',
  239. 'ecelp9600' => 'audio/vnd.nuera.ecelp9600',
  240. 'ecma' => 'application/ecmascript',
  241. 'edm' => 'application/vnd.novadigm.edm',
  242. 'edx' => 'application/vnd.novadigm.edx',
  243. 'efif' => 'application/vnd.picsel',
  244. 'ei6' => 'application/vnd.pg.osasli',
  245. 'elc' => 'application/octet-stream',
  246. 'emf' => 'image/emf',
  247. 'eml' => 'message/rfc822',
  248. 'emma' => 'application/emma+xml',
  249. 'emotionml' => 'application/emotionml+xml',
  250. 'emz' => 'application/x-msmetafile',
  251. 'eol' => 'audio/vnd.digital-winds',
  252. 'eot' => 'application/vnd.ms-fontobject',
  253. 'eps' => 'application/postscript',
  254. 'epub' => 'application/epub+zip',
  255. 'es' => 'application/ecmascript',
  256. 'es3' => 'application/vnd.eszigno3+xml',
  257. 'esa' => 'application/vnd.osgi.subsystem',
  258. 'esf' => 'application/vnd.epson.esf',
  259. 'et3' => 'application/vnd.eszigno3+xml',
  260. 'etx' => 'text/x-setext',
  261. 'eva' => 'application/x-eva',
  262. 'evy' => 'application/x-envoy',
  263. 'exe' => 'application/octet-stream',
  264. 'exi' => 'application/exi',
  265. 'exp' => 'application/express',
  266. 'exr' => 'image/aces',
  267. 'ext' => 'application/vnd.novadigm.ext',
  268. 'ez' => 'application/andrew-inset',
  269. 'ez2' => 'application/vnd.ezpix-album',
  270. 'ez3' => 'application/vnd.ezpix-package',
  271. 'f' => 'text/x-fortran',
  272. 'f4v' => 'video/mp4',
  273. 'f77' => 'text/x-fortran',
  274. 'f90' => 'text/x-fortran',
  275. 'fbs' => 'image/vnd.fastbidsheet',
  276. 'fcdt' => 'application/vnd.adobe.formscentral.fcdt',
  277. 'fcs' => 'application/vnd.isac.fcs',
  278. 'fdf' => 'application/vnd.fdf',
  279. 'fdt' => 'application/fdt+xml',
  280. 'fe_launch' => 'application/vnd.denovo.fcselayout-link',
  281. 'fg5' => 'application/vnd.fujitsu.oasysgp',
  282. 'fgd' => 'application/x-director',
  283. 'fh' => 'image/x-freehand',
  284. 'fh4' => 'image/x-freehand',
  285. 'fh5' => 'image/x-freehand',
  286. 'fh7' => 'image/x-freehand',
  287. 'fhc' => 'image/x-freehand',
  288. 'fig' => 'application/x-xfig',
  289. 'fits' => 'image/fits',
  290. 'flac' => 'audio/x-flac',
  291. 'fli' => 'video/x-fli',
  292. 'flo' => 'application/vnd.micrografx.flo',
  293. 'flv' => 'video/x-flv',
  294. 'flw' => 'application/vnd.kde.kivio',
  295. 'flx' => 'text/vnd.fmi.flexstor',
  296. 'fly' => 'text/vnd.fly',
  297. 'fm' => 'application/vnd.framemaker',
  298. 'fnc' => 'application/vnd.frogans.fnc',
  299. 'fo' => 'application/vnd.software602.filler.form+xml',
  300. 'for' => 'text/x-fortran',
  301. 'fpx' => 'image/vnd.fpx',
  302. 'frame' => 'application/vnd.framemaker',
  303. 'fsc' => 'application/vnd.fsc.weblaunch',
  304. 'fst' => 'image/vnd.fst',
  305. 'ftc' => 'application/vnd.fluxtime.clip',
  306. 'fti' => 'application/vnd.anser-web-funds-transfer-initiation',
  307. 'fvt' => 'video/vnd.fvt',
  308. 'fxp' => 'application/vnd.adobe.fxp',
  309. 'fxpl' => 'application/vnd.adobe.fxp',
  310. 'fzs' => 'application/vnd.fuzzysheet',
  311. 'g2w' => 'application/vnd.geoplan',
  312. 'g3' => 'image/g3fax',
  313. 'g3w' => 'application/vnd.geospace',
  314. 'gac' => 'application/vnd.groove-account',
  315. 'gam' => 'application/x-tads',
  316. 'gbr' => 'application/rpki-ghostbusters',
  317. 'gca' => 'application/x-gca-compressed',
  318. 'gdl' => 'model/vnd.gdl',
  319. 'gdoc' => 'application/vnd.google-apps.document',
  320. 'ged' => 'text/vnd.familysearch.gedcom',
  321. 'geo' => 'application/vnd.dynageo',
  322. 'geojson' => 'application/geo+json',
  323. 'gex' => 'application/vnd.geometry-explorer',
  324. 'ggb' => 'application/vnd.geogebra.file',
  325. 'ggt' => 'application/vnd.geogebra.tool',
  326. 'ghf' => 'application/vnd.groove-help',
  327. 'gif' => 'image/gif',
  328. 'gim' => 'application/vnd.groove-identity-message',
  329. 'glb' => 'model/gltf-binary',
  330. 'gltf' => 'model/gltf+json',
  331. 'gml' => 'application/gml+xml',
  332. 'gmx' => 'application/vnd.gmx',
  333. 'gnumeric' => 'application/x-gnumeric',
  334. 'gpg' => 'application/gpg-keys',
  335. 'gph' => 'application/vnd.flographit',
  336. 'gpx' => 'application/gpx+xml',
  337. 'gqf' => 'application/vnd.grafeq',
  338. 'gqs' => 'application/vnd.grafeq',
  339. 'gram' => 'application/srgs',
  340. 'gramps' => 'application/x-gramps-xml',
  341. 'gre' => 'application/vnd.geometry-explorer',
  342. 'grv' => 'application/vnd.groove-injector',
  343. 'grxml' => 'application/srgs+xml',
  344. 'gsf' => 'application/x-font-ghostscript',
  345. 'gsheet' => 'application/vnd.google-apps.spreadsheet',
  346. 'gslides' => 'application/vnd.google-apps.presentation',
  347. 'gtar' => 'application/x-gtar',
  348. 'gtm' => 'application/vnd.groove-tool-message',
  349. 'gtw' => 'model/vnd.gtw',
  350. 'gv' => 'text/vnd.graphviz',
  351. 'gxf' => 'application/gxf',
  352. 'gxt' => 'application/vnd.geonext',
  353. 'gz' => 'application/gzip',
  354. 'gzip' => 'application/gzip',
  355. 'h' => 'text/x-c',
  356. 'h261' => 'video/h261',
  357. 'h263' => 'video/h263',
  358. 'h264' => 'video/h264',
  359. 'hal' => 'application/vnd.hal+xml',
  360. 'hbci' => 'application/vnd.hbci',
  361. 'hbs' => 'text/x-handlebars-template',
  362. 'hdd' => 'application/x-virtualbox-hdd',
  363. 'hdf' => 'application/x-hdf',
  364. 'heic' => 'image/heic',
  365. 'heics' => 'image/heic-sequence',
  366. 'heif' => 'image/heif',
  367. 'heifs' => 'image/heif-sequence',
  368. 'hej2' => 'image/hej2k',
  369. 'held' => 'application/atsc-held+xml',
  370. 'hh' => 'text/x-c',
  371. 'hjson' => 'application/hjson',
  372. 'hlp' => 'application/winhlp',
  373. 'hpgl' => 'application/vnd.hp-hpgl',
  374. 'hpid' => 'application/vnd.hp-hpid',
  375. 'hps' => 'application/vnd.hp-hps',
  376. 'hqx' => 'application/mac-binhex40',
  377. 'hsj2' => 'image/hsj2',
  378. 'htc' => 'text/x-component',
  379. 'htke' => 'application/vnd.kenameaapp',
  380. 'htm' => 'text/html',
  381. 'html' => 'text/html',
  382. 'hvd' => 'application/vnd.yamaha.hv-dic',
  383. 'hvp' => 'application/vnd.yamaha.hv-voice',
  384. 'hvs' => 'application/vnd.yamaha.hv-script',
  385. 'i2g' => 'application/vnd.intergeo',
  386. 'icc' => 'application/vnd.iccprofile',
  387. 'ice' => 'x-conference/x-cooltalk',
  388. 'icm' => 'application/vnd.iccprofile',
  389. 'ico' => 'image/x-icon',
  390. 'ics' => 'text/calendar',
  391. 'ief' => 'image/ief',
  392. 'ifb' => 'text/calendar',
  393. 'ifm' => 'application/vnd.shana.informed.formdata',
  394. 'iges' => 'model/iges',
  395. 'igl' => 'application/vnd.igloader',
  396. 'igm' => 'application/vnd.insors.igm',
  397. 'igs' => 'model/iges',
  398. 'igx' => 'application/vnd.micrografx.igx',
  399. 'iif' => 'application/vnd.shana.informed.interchange',
  400. 'img' => 'application/octet-stream',
  401. 'imp' => 'application/vnd.accpac.simply.imp',
  402. 'ims' => 'application/vnd.ms-ims',
  403. 'in' => 'text/plain',
  404. 'ini' => 'text/plain',
  405. 'ink' => 'application/inkml+xml',
  406. 'inkml' => 'application/inkml+xml',
  407. 'install' => 'application/x-install-instructions',
  408. 'iota' => 'application/vnd.astraea-software.iota',
  409. 'ipfix' => 'application/ipfix',
  410. 'ipk' => 'application/vnd.shana.informed.package',
  411. 'irm' => 'application/vnd.ibm.rights-management',
  412. 'irp' => 'application/vnd.irepository.package+xml',
  413. 'iso' => 'application/x-iso9660-image',
  414. 'itp' => 'application/vnd.shana.informed.formtemplate',
  415. 'its' => 'application/its+xml',
  416. 'ivp' => 'application/vnd.immervision-ivp',
  417. 'ivu' => 'application/vnd.immervision-ivu',
  418. 'jad' => 'text/vnd.sun.j2me.app-descriptor',
  419. 'jade' => 'text/jade',
  420. 'jam' => 'application/vnd.jam',
  421. 'jar' => 'application/java-archive',
  422. 'jardiff' => 'application/x-java-archive-diff',
  423. 'java' => 'text/x-java-source',
  424. 'jhc' => 'image/jphc',
  425. 'jisp' => 'application/vnd.jisp',
  426. 'jls' => 'image/jls',
  427. 'jlt' => 'application/vnd.hp-jlyt',
  428. 'jng' => 'image/x-jng',
  429. 'jnlp' => 'application/x-java-jnlp-file',
  430. 'joda' => 'application/vnd.joost.joda-archive',
  431. 'jp2' => 'image/jp2',
  432. 'jpe' => 'image/jpeg',
  433. 'jpeg' => 'image/jpeg',
  434. 'jpf' => 'image/jpx',
  435. 'jpg' => 'image/jpeg',
  436. 'jpg2' => 'image/jp2',
  437. 'jpgm' => 'video/jpm',
  438. 'jpgv' => 'video/jpeg',
  439. 'jph' => 'image/jph',
  440. 'jpm' => 'video/jpm',
  441. 'jpx' => 'image/jpx',
  442. 'js' => 'application/javascript',
  443. 'json' => 'application/json',
  444. 'json5' => 'application/json5',
  445. 'jsonld' => 'application/ld+json',
  446. 'jsonml' => 'application/jsonml+json',
  447. 'jsx' => 'text/jsx',
  448. 'jxr' => 'image/jxr',
  449. 'jxra' => 'image/jxra',
  450. 'jxrs' => 'image/jxrs',
  451. 'jxs' => 'image/jxs',
  452. 'jxsc' => 'image/jxsc',
  453. 'jxsi' => 'image/jxsi',
  454. 'jxss' => 'image/jxss',
  455. 'kar' => 'audio/midi',
  456. 'karbon' => 'application/vnd.kde.karbon',
  457. 'kdb' => 'application/octet-stream',
  458. 'kdbx' => 'application/x-keepass2',
  459. 'key' => 'application/x-iwork-keynote-sffkey',
  460. 'kfo' => 'application/vnd.kde.kformula',
  461. 'kia' => 'application/vnd.kidspiration',
  462. 'kml' => 'application/vnd.google-earth.kml+xml',
  463. 'kmz' => 'application/vnd.google-earth.kmz',
  464. 'kne' => 'application/vnd.kinar',
  465. 'knp' => 'application/vnd.kinar',
  466. 'kon' => 'application/vnd.kde.kontour',
  467. 'kpr' => 'application/vnd.kde.kpresenter',
  468. 'kpt' => 'application/vnd.kde.kpresenter',
  469. 'kpxx' => 'application/vnd.ds-keypoint',
  470. 'ksp' => 'application/vnd.kde.kspread',
  471. 'ktr' => 'application/vnd.kahootz',
  472. 'ktx' => 'image/ktx',
  473. 'ktx2' => 'image/ktx2',
  474. 'ktz' => 'application/vnd.kahootz',
  475. 'kwd' => 'application/vnd.kde.kword',
  476. 'kwt' => 'application/vnd.kde.kword',
  477. 'lasxml' => 'application/vnd.las.las+xml',
  478. 'latex' => 'application/x-latex',
  479. 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop',
  480. 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml',
  481. 'les' => 'application/vnd.hhe.lesson-player',
  482. 'less' => 'text/less',
  483. 'lgr' => 'application/lgr+xml',
  484. 'lha' => 'application/octet-stream',
  485. 'link66' => 'application/vnd.route66.link66+xml',
  486. 'list' => 'text/plain',
  487. 'list3820' => 'application/vnd.ibm.modcap',
  488. 'listafp' => 'application/vnd.ibm.modcap',
  489. 'litcoffee' => 'text/coffeescript',
  490. 'lnk' => 'application/x-ms-shortcut',
  491. 'log' => 'text/plain',
  492. 'lostxml' => 'application/lost+xml',
  493. 'lrf' => 'application/octet-stream',
  494. 'lrm' => 'application/vnd.ms-lrm',
  495. 'ltf' => 'application/vnd.frogans.ltf',
  496. 'lua' => 'text/x-lua',
  497. 'luac' => 'application/x-lua-bytecode',
  498. 'lvp' => 'audio/vnd.lucent.voice',
  499. 'lwp' => 'application/vnd.lotus-wordpro',
  500. 'lzh' => 'application/octet-stream',
  501. 'm1v' => 'video/mpeg',
  502. 'm2a' => 'audio/mpeg',
  503. 'm2v' => 'video/mpeg',
  504. 'm3a' => 'audio/mpeg',
  505. 'm3u' => 'text/plain',
  506. 'm3u8' => 'application/vnd.apple.mpegurl',
  507. 'm4a' => 'audio/x-m4a',
  508. 'm4p' => 'application/mp4',
  509. 'm4s' => 'video/iso.segment',
  510. 'm4u' => 'application/vnd.mpegurl',
  511. 'm4v' => 'video/x-m4v',
  512. 'm13' => 'application/x-msmediaview',
  513. 'm14' => 'application/x-msmediaview',
  514. 'm21' => 'application/mp21',
  515. 'ma' => 'application/mathematica',
  516. 'mads' => 'application/mads+xml',
  517. 'maei' => 'application/mmt-aei+xml',
  518. 'mag' => 'application/vnd.ecowin.chart',
  519. 'maker' => 'application/vnd.framemaker',
  520. 'man' => 'text/troff',
  521. 'manifest' => 'text/cache-manifest',
  522. 'map' => 'application/json',
  523. 'mar' => 'application/octet-stream',
  524. 'markdown' => 'text/markdown',
  525. 'mathml' => 'application/mathml+xml',
  526. 'mb' => 'application/mathematica',
  527. 'mbk' => 'application/vnd.mobius.mbk',
  528. 'mbox' => 'application/mbox',
  529. 'mc1' => 'application/vnd.medcalcdata',
  530. 'mcd' => 'application/vnd.mcd',
  531. 'mcurl' => 'text/vnd.curl.mcurl',
  532. 'md' => 'text/markdown',
  533. 'mdb' => 'application/x-msaccess',
  534. 'mdi' => 'image/vnd.ms-modi',
  535. 'mdx' => 'text/mdx',
  536. 'me' => 'text/troff',
  537. 'mesh' => 'model/mesh',
  538. 'meta4' => 'application/metalink4+xml',
  539. 'metalink' => 'application/metalink+xml',
  540. 'mets' => 'application/mets+xml',
  541. 'mfm' => 'application/vnd.mfmp',
  542. 'mft' => 'application/rpki-manifest',
  543. 'mgp' => 'application/vnd.osgeo.mapguide.package',
  544. 'mgz' => 'application/vnd.proteus.magazine',
  545. 'mid' => 'audio/midi',
  546. 'midi' => 'audio/midi',
  547. 'mie' => 'application/x-mie',
  548. 'mif' => 'application/vnd.mif',
  549. 'mime' => 'message/rfc822',
  550. 'mj2' => 'video/mj2',
  551. 'mjp2' => 'video/mj2',
  552. 'mjs' => 'application/javascript',
  553. 'mk3d' => 'video/x-matroska',
  554. 'mka' => 'audio/x-matroska',
  555. 'mkd' => 'text/x-markdown',
  556. 'mks' => 'video/x-matroska',
  557. 'mkv' => 'video/x-matroska',
  558. 'mlp' => 'application/vnd.dolby.mlp',
  559. 'mmd' => 'application/vnd.chipnuts.karaoke-mmd',
  560. 'mmf' => 'application/vnd.smaf',
  561. 'mml' => 'text/mathml',
  562. 'mmr' => 'image/vnd.fujixerox.edmics-mmr',
  563. 'mng' => 'video/x-mng',
  564. 'mny' => 'application/x-msmoney',
  565. 'mobi' => 'application/x-mobipocket-ebook',
  566. 'mods' => 'application/mods+xml',
  567. 'mov' => 'video/quicktime',
  568. 'movie' => 'video/x-sgi-movie',
  569. 'mp2' => 'audio/mpeg',
  570. 'mp2a' => 'audio/mpeg',
  571. 'mp3' => 'audio/mpeg',
  572. 'mp4' => 'video/mp4',
  573. 'mp4a' => 'audio/mp4',
  574. 'mp4s' => 'application/mp4',
  575. 'mp4v' => 'video/mp4',
  576. 'mp21' => 'application/mp21',
  577. 'mpc' => 'application/vnd.mophun.certificate',
  578. 'mpd' => 'application/dash+xml',
  579. 'mpe' => 'video/mpeg',
  580. 'mpeg' => 'video/mpeg',
  581. 'mpf' => 'application/media-policy-dataset+xml',
  582. 'mpg' => 'video/mpeg',
  583. 'mpg4' => 'video/mp4',
  584. 'mpga' => 'audio/mpeg',
  585. 'mpkg' => 'application/vnd.apple.installer+xml',
  586. 'mpm' => 'application/vnd.blueice.multipass',
  587. 'mpn' => 'application/vnd.mophun.application',
  588. 'mpp' => 'application/vnd.ms-project',
  589. 'mpt' => 'application/vnd.ms-project',
  590. 'mpy' => 'application/vnd.ibm.minipay',
  591. 'mqy' => 'application/vnd.mobius.mqy',
  592. 'mrc' => 'application/marc',
  593. 'mrcx' => 'application/marcxml+xml',
  594. 'ms' => 'text/troff',
  595. 'mscml' => 'application/mediaservercontrol+xml',
  596. 'mseed' => 'application/vnd.fdsn.mseed',
  597. 'mseq' => 'application/vnd.mseq',
  598. 'msf' => 'application/vnd.epson.msf',
  599. 'msg' => 'application/vnd.ms-outlook',
  600. 'msh' => 'model/mesh',
  601. 'msi' => 'application/x-msdownload',
  602. 'msl' => 'application/vnd.mobius.msl',
  603. 'msm' => 'application/octet-stream',
  604. 'msp' => 'application/octet-stream',
  605. 'msty' => 'application/vnd.muvee.style',
  606. 'mtl' => 'model/mtl',
  607. 'mts' => 'model/vnd.mts',
  608. 'mus' => 'application/vnd.musician',
  609. 'musd' => 'application/mmt-usd+xml',
  610. 'musicxml' => 'application/vnd.recordare.musicxml+xml',
  611. 'mvb' => 'application/x-msmediaview',
  612. 'mvt' => 'application/vnd.mapbox-vector-tile',
  613. 'mwf' => 'application/vnd.mfer',
  614. 'mxf' => 'application/mxf',
  615. 'mxl' => 'application/vnd.recordare.musicxml',
  616. 'mxmf' => 'audio/mobile-xmf',
  617. 'mxml' => 'application/xv+xml',
  618. 'mxs' => 'application/vnd.triscape.mxs',
  619. 'mxu' => 'video/vnd.mpegurl',
  620. 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install',
  621. 'n3' => 'text/n3',
  622. 'nb' => 'application/mathematica',
  623. 'nbp' => 'application/vnd.wolfram.player',
  624. 'nc' => 'application/x-netcdf',
  625. 'ncx' => 'application/x-dtbncx+xml',
  626. 'nfo' => 'text/x-nfo',
  627. 'ngdat' => 'application/vnd.nokia.n-gage.data',
  628. 'nitf' => 'application/vnd.nitf',
  629. 'nlu' => 'application/vnd.neurolanguage.nlu',
  630. 'nml' => 'application/vnd.enliven',
  631. 'nnd' => 'application/vnd.noblenet-directory',
  632. 'nns' => 'application/vnd.noblenet-sealer',
  633. 'nnw' => 'application/vnd.noblenet-web',
  634. 'npx' => 'image/vnd.net-fpx',
  635. 'nq' => 'application/n-quads',
  636. 'nsc' => 'application/x-conference',
  637. 'nsf' => 'application/vnd.lotus-notes',
  638. 'nt' => 'application/n-triples',
  639. 'ntf' => 'application/vnd.nitf',
  640. 'numbers' => 'application/x-iwork-numbers-sffnumbers',
  641. 'nzb' => 'application/x-nzb',
  642. 'oa2' => 'application/vnd.fujitsu.oasys2',
  643. 'oa3' => 'application/vnd.fujitsu.oasys3',
  644. 'oas' => 'application/vnd.fujitsu.oasys',
  645. 'obd' => 'application/x-msbinder',
  646. 'obgx' => 'application/vnd.openblox.game+xml',
  647. 'obj' => 'model/obj',
  648. 'oda' => 'application/oda',
  649. 'odb' => 'application/vnd.oasis.opendocument.database',
  650. 'odc' => 'application/vnd.oasis.opendocument.chart',
  651. 'odf' => 'application/vnd.oasis.opendocument.formula',
  652. 'odft' => 'application/vnd.oasis.opendocument.formula-template',
  653. 'odg' => 'application/vnd.oasis.opendocument.graphics',
  654. 'odi' => 'application/vnd.oasis.opendocument.image',
  655. 'odm' => 'application/vnd.oasis.opendocument.text-master',
  656. 'odp' => 'application/vnd.oasis.opendocument.presentation',
  657. 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
  658. 'odt' => 'application/vnd.oasis.opendocument.text',
  659. 'oga' => 'audio/ogg',
  660. 'ogex' => 'model/vnd.opengex',
  661. 'ogg' => 'audio/ogg',
  662. 'ogv' => 'video/ogg',
  663. 'ogx' => 'application/ogg',
  664. 'omdoc' => 'application/omdoc+xml',
  665. 'onepkg' => 'application/onenote',
  666. 'onetmp' => 'application/onenote',
  667. 'onetoc' => 'application/onenote',
  668. 'onetoc2' => 'application/onenote',
  669. 'opf' => 'application/oebps-package+xml',
  670. 'opml' => 'text/x-opml',
  671. 'oprc' => 'application/vnd.palm',
  672. 'opus' => 'audio/ogg',
  673. 'org' => 'text/x-org',
  674. 'osf' => 'application/vnd.yamaha.openscoreformat',
  675. 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
  676. 'osm' => 'application/vnd.openstreetmap.data+xml',
  677. 'otc' => 'application/vnd.oasis.opendocument.chart-template',
  678. 'otf' => 'font/otf',
  679. 'otg' => 'application/vnd.oasis.opendocument.graphics-template',
  680. 'oth' => 'application/vnd.oasis.opendocument.text-web',
  681. 'oti' => 'application/vnd.oasis.opendocument.image-template',
  682. 'otp' => 'application/vnd.oasis.opendocument.presentation-template',
  683. 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
  684. 'ott' => 'application/vnd.oasis.opendocument.text-template',
  685. 'ova' => 'application/x-virtualbox-ova',
  686. 'ovf' => 'application/x-virtualbox-ovf',
  687. 'owl' => 'application/rdf+xml',
  688. 'oxps' => 'application/oxps',
  689. 'oxt' => 'application/vnd.openofficeorg.extension',
  690. 'p' => 'text/x-pascal',
  691. 'p7a' => 'application/x-pkcs7-signature',
  692. 'p7b' => 'application/x-pkcs7-certificates',
  693. 'p7c' => 'application/pkcs7-mime',
  694. 'p7m' => 'application/pkcs7-mime',
  695. 'p7r' => 'application/x-pkcs7-certreqresp',
  696. 'p7s' => 'application/pkcs7-signature',
  697. 'p8' => 'application/pkcs8',
  698. 'p10' => 'application/x-pkcs10',
  699. 'p12' => 'application/x-pkcs12',
  700. 'pac' => 'application/x-ns-proxy-autoconfig',
  701. 'pages' => 'application/x-iwork-pages-sffpages',
  702. 'pas' => 'text/x-pascal',
  703. 'paw' => 'application/vnd.pawaafile',
  704. 'pbd' => 'application/vnd.powerbuilder6',
  705. 'pbm' => 'image/x-portable-bitmap',
  706. 'pcap' => 'application/vnd.tcpdump.pcap',
  707. 'pcf' => 'application/x-font-pcf',
  708. 'pcl' => 'application/vnd.hp-pcl',
  709. 'pclxl' => 'application/vnd.hp-pclxl',
  710. 'pct' => 'image/x-pict',
  711. 'pcurl' => 'application/vnd.curl.pcurl',
  712. 'pcx' => 'image/x-pcx',
  713. 'pdb' => 'application/x-pilot',
  714. 'pde' => 'text/x-processing',
  715. 'pdf' => 'application/pdf',
  716. 'pem' => 'application/x-x509-user-cert',
  717. 'pfa' => 'application/x-font-type1',
  718. 'pfb' => 'application/x-font-type1',
  719. 'pfm' => 'application/x-font-type1',
  720. 'pfr' => 'application/font-tdpfr',
  721. 'pfx' => 'application/x-pkcs12',
  722. 'pgm' => 'image/x-portable-graymap',
  723. 'pgn' => 'application/x-chess-pgn',
  724. 'pgp' => 'application/pgp',
  725. 'phar' => 'application/octet-stream',
  726. 'php' => 'application/x-httpd-php',
  727. 'php3' => 'application/x-httpd-php',
  728. 'php4' => 'application/x-httpd-php',
  729. 'phps' => 'application/x-httpd-php-source',
  730. 'phtml' => 'application/x-httpd-php',
  731. 'pic' => 'image/x-pict',
  732. 'pkg' => 'application/octet-stream',
  733. 'pki' => 'application/pkixcmp',
  734. 'pkipath' => 'application/pkix-pkipath',
  735. 'pkpass' => 'application/vnd.apple.pkpass',
  736. 'pl' => 'application/x-perl',
  737. 'plb' => 'application/vnd.3gpp.pic-bw-large',
  738. 'plc' => 'application/vnd.mobius.plc',
  739. 'plf' => 'application/vnd.pocketlearn',
  740. 'pls' => 'application/pls+xml',
  741. 'pm' => 'application/x-perl',
  742. 'pml' => 'application/vnd.ctc-posml',
  743. 'png' => 'image/png',
  744. 'pnm' => 'image/x-portable-anymap',
  745. 'portpkg' => 'application/vnd.macports.portpkg',
  746. 'pot' => 'application/vnd.ms-powerpoint',
  747. 'potm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
  748. 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
  749. 'ppa' => 'application/vnd.ms-powerpoint',
  750. 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
  751. 'ppd' => 'application/vnd.cups-ppd',
  752. 'ppm' => 'image/x-portable-pixmap',
  753. 'pps' => 'application/vnd.ms-powerpoint',
  754. 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
  755. 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
  756. 'ppt' => 'application/powerpoint',
  757. 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
  758. 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
  759. 'pqa' => 'application/vnd.palm',
  760. 'prc' => 'model/prc',
  761. 'pre' => 'application/vnd.lotus-freelance',
  762. 'prf' => 'application/pics-rules',
  763. 'provx' => 'application/provenance+xml',
  764. 'ps' => 'application/postscript',
  765. 'psb' => 'application/vnd.3gpp.pic-bw-small',
  766. 'psd' => 'application/x-photoshop',
  767. 'psf' => 'application/x-font-linux-psf',
  768. 'pskcxml' => 'application/pskc+xml',
  769. 'pti' => 'image/prs.pti',
  770. 'ptid' => 'application/vnd.pvi.ptid1',
  771. 'pub' => 'application/x-mspublisher',
  772. 'pvb' => 'application/vnd.3gpp.pic-bw-var',
  773. 'pwn' => 'application/vnd.3m.post-it-notes',
  774. 'pya' => 'audio/vnd.ms-playready.media.pya',
  775. 'pyv' => 'video/vnd.ms-playready.media.pyv',
  776. 'qam' => 'application/vnd.epson.quickanime',
  777. 'qbo' => 'application/vnd.intu.qbo',
  778. 'qfx' => 'application/vnd.intu.qfx',
  779. 'qps' => 'application/vnd.publishare-delta-tree',
  780. 'qt' => 'video/quicktime',
  781. 'qwd' => 'application/vnd.quark.quarkxpress',
  782. 'qwt' => 'application/vnd.quark.quarkxpress',
  783. 'qxb' => 'application/vnd.quark.quarkxpress',
  784. 'qxd' => 'application/vnd.quark.quarkxpress',
  785. 'qxl' => 'application/vnd.quark.quarkxpress',
  786. 'qxt' => 'application/vnd.quark.quarkxpress',
  787. 'ra' => 'audio/x-realaudio',
  788. 'ram' => 'audio/x-pn-realaudio',
  789. 'raml' => 'application/raml+yaml',
  790. 'rapd' => 'application/route-apd+xml',
  791. 'rar' => 'application/x-rar',
  792. 'ras' => 'image/x-cmu-raster',
  793. 'rcprofile' => 'application/vnd.ipunplugged.rcprofile',
  794. 'rdf' => 'application/rdf+xml',
  795. 'rdz' => 'application/vnd.data-vision.rdz',
  796. 'relo' => 'application/p2p-overlay+xml',
  797. 'rep' => 'application/vnd.businessobjects',
  798. 'res' => 'application/x-dtbresource+xml',
  799. 'rgb' => 'image/x-rgb',
  800. 'rif' => 'application/reginfo+xml',
  801. 'rip' => 'audio/vnd.rip',
  802. 'ris' => 'application/x-research-info-systems',
  803. 'rl' => 'application/resource-lists+xml',
  804. 'rlc' => 'image/vnd.fujixerox.edmics-rlc',
  805. 'rld' => 'application/resource-lists-diff+xml',
  806. 'rm' => 'audio/x-pn-realaudio',
  807. 'rmi' => 'audio/midi',
  808. 'rmp' => 'audio/x-pn-realaudio-plugin',
  809. 'rms' => 'application/vnd.jcp.javame.midlet-rms',
  810. 'rmvb' => 'application/vnd.rn-realmedia-vbr',
  811. 'rnc' => 'application/relax-ng-compact-syntax',
  812. 'rng' => 'application/xml',
  813. 'roa' => 'application/rpki-roa',
  814. 'roff' => 'text/troff',
  815. 'rp9' => 'application/vnd.cloanto.rp9',
  816. 'rpm' => 'audio/x-pn-realaudio-plugin',
  817. 'rpss' => 'application/vnd.nokia.radio-presets',
  818. 'rpst' => 'application/vnd.nokia.radio-preset',
  819. 'rq' => 'application/sparql-query',
  820. 'rs' => 'application/rls-services+xml',
  821. 'rsa' => 'application/x-pkcs7',
  822. 'rsat' => 'application/atsc-rsat+xml',
  823. 'rsd' => 'application/rsd+xml',
  824. 'rsheet' => 'application/urc-ressheet+xml',
  825. 'rss' => 'application/rss+xml',
  826. 'rtf' => 'text/rtf',
  827. 'rtx' => 'text/richtext',
  828. 'run' => 'application/x-makeself',
  829. 'rusd' => 'application/route-usd+xml',
  830. 'rv' => 'video/vnd.rn-realvideo',
  831. 's' => 'text/x-asm',
  832. 's3m' => 'audio/s3m',
  833. 'saf' => 'application/vnd.yamaha.smaf-audio',
  834. 'sass' => 'text/x-sass',
  835. 'sbml' => 'application/sbml+xml',
  836. 'sc' => 'application/vnd.ibm.secure-container',
  837. 'scd' => 'application/x-msschedule',
  838. 'scm' => 'application/vnd.lotus-screencam',
  839. 'scq' => 'application/scvp-cv-request',
  840. 'scs' => 'application/scvp-cv-response',
  841. 'scss' => 'text/x-scss',
  842. 'scurl' => 'text/vnd.curl.scurl',
  843. 'sda' => 'application/vnd.stardivision.draw',
  844. 'sdc' => 'application/vnd.stardivision.calc',
  845. 'sdd' => 'application/vnd.stardivision.impress',
  846. 'sdkd' => 'application/vnd.solent.sdkm+xml',
  847. 'sdkm' => 'application/vnd.solent.sdkm+xml',
  848. 'sdp' => 'application/sdp',
  849. 'sdw' => 'application/vnd.stardivision.writer',
  850. 'sea' => 'application/octet-stream',
  851. 'see' => 'application/vnd.seemail',
  852. 'seed' => 'application/vnd.fdsn.seed',
  853. 'sema' => 'application/vnd.sema',
  854. 'semd' => 'application/vnd.semd',
  855. 'semf' => 'application/vnd.semf',
  856. 'senmlx' => 'application/senml+xml',
  857. 'sensmlx' => 'application/sensml+xml',
  858. 'ser' => 'application/java-serialized-object',
  859. 'setpay' => 'application/set-payment-initiation',
  860. 'setreg' => 'application/set-registration-initiation',
  861. 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data',
  862. 'sfs' => 'application/vnd.spotfire.sfs',
  863. 'sfv' => 'text/x-sfv',
  864. 'sgi' => 'image/sgi',
  865. 'sgl' => 'application/vnd.stardivision.writer-global',
  866. 'sgm' => 'text/sgml',
  867. 'sgml' => 'text/sgml',
  868. 'sh' => 'application/x-sh',
  869. 'shar' => 'application/x-shar',
  870. 'shex' => 'text/shex',
  871. 'shf' => 'application/shf+xml',
  872. 'shtml' => 'text/html',
  873. 'sid' => 'image/x-mrsid-image',
  874. 'sieve' => 'application/sieve',
  875. 'sig' => 'application/pgp-signature',
  876. 'sil' => 'audio/silk',
  877. 'silo' => 'model/mesh',
  878. 'sis' => 'application/vnd.symbian.install',
  879. 'sisx' => 'application/vnd.symbian.install',
  880. 'sit' => 'application/x-stuffit',
  881. 'sitx' => 'application/x-stuffitx',
  882. 'siv' => 'application/sieve',
  883. 'skd' => 'application/vnd.koan',
  884. 'skm' => 'application/vnd.koan',
  885. 'skp' => 'application/vnd.koan',
  886. 'skt' => 'application/vnd.koan',
  887. 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12',
  888. 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
  889. 'slim' => 'text/slim',
  890. 'slm' => 'text/slim',
  891. 'sls' => 'application/route-s-tsid+xml',
  892. 'slt' => 'application/vnd.epson.salt',
  893. 'sm' => 'application/vnd.stepmania.stepchart',
  894. 'smf' => 'application/vnd.stardivision.math',
  895. 'smi' => 'application/smil',
  896. 'smil' => 'application/smil',
  897. 'smv' => 'video/x-smv',
  898. 'smzip' => 'application/vnd.stepmania.package',
  899. 'snd' => 'audio/basic',
  900. 'snf' => 'application/x-font-snf',
  901. 'so' => 'application/octet-stream',
  902. 'spc' => 'application/x-pkcs7-certificates',
  903. 'spdx' => 'text/spdx',
  904. 'spf' => 'application/vnd.yamaha.smaf-phrase',
  905. 'spl' => 'application/x-futuresplash',
  906. 'spot' => 'text/vnd.in3d.spot',
  907. 'spp' => 'application/scvp-vp-response',
  908. 'spq' => 'application/scvp-vp-request',
  909. 'spx' => 'audio/ogg',
  910. 'sql' => 'application/x-sql',
  911. 'src' => 'application/x-wais-source',
  912. 'srt' => 'application/x-subrip',
  913. 'sru' => 'application/sru+xml',
  914. 'srx' => 'application/sparql-results+xml',
  915. 'ssdl' => 'application/ssdl+xml',
  916. 'sse' => 'application/vnd.kodak-descriptor',
  917. 'ssf' => 'application/vnd.epson.ssf',
  918. 'ssml' => 'application/ssml+xml',
  919. 'sst' => 'application/octet-stream',
  920. 'st' => 'application/vnd.sailingtracker.track',
  921. 'stc' => 'application/vnd.sun.xml.calc.template',
  922. 'std' => 'application/vnd.sun.xml.draw.template',
  923. 'stf' => 'application/vnd.wt.stf',
  924. 'sti' => 'application/vnd.sun.xml.impress.template',
  925. 'stk' => 'application/hyperstudio',
  926. 'stl' => 'model/stl',
  927. 'stpx' => 'model/step+xml',
  928. 'stpxz' => 'model/step-xml+zip',
  929. 'stpz' => 'model/step+zip',
  930. 'str' => 'application/vnd.pg.format',
  931. 'stw' => 'application/vnd.sun.xml.writer.template',
  932. 'styl' => 'text/stylus',
  933. 'stylus' => 'text/stylus',
  934. 'sub' => 'text/vnd.dvb.subtitle',
  935. 'sus' => 'application/vnd.sus-calendar',
  936. 'susp' => 'application/vnd.sus-calendar',
  937. 'sv4cpio' => 'application/x-sv4cpio',
  938. 'sv4crc' => 'application/x-sv4crc',
  939. 'svc' => 'application/vnd.dvb.service',
  940. 'svd' => 'application/vnd.svd',
  941. 'svg' => 'image/svg+xml',
  942. 'svgz' => 'image/svg+xml',
  943. 'swa' => 'application/x-director',
  944. 'swf' => 'application/x-shockwave-flash',
  945. 'swi' => 'application/vnd.aristanetworks.swi',
  946. 'swidtag' => 'application/swid+xml',
  947. 'sxc' => 'application/vnd.sun.xml.calc',
  948. 'sxd' => 'application/vnd.sun.xml.draw',
  949. 'sxg' => 'application/vnd.sun.xml.writer.global',
  950. 'sxi' => 'application/vnd.sun.xml.impress',
  951. 'sxm' => 'application/vnd.sun.xml.math',
  952. 'sxw' => 'application/vnd.sun.xml.writer',
  953. 't' => 'text/troff',
  954. 't3' => 'application/x-t3vm-image',
  955. 't38' => 'image/t38',
  956. 'taglet' => 'application/vnd.mynfc',
  957. 'tao' => 'application/vnd.tao.intent-module-archive',
  958. 'tap' => 'image/vnd.tencent.tap',
  959. 'tar' => 'application/x-tar',
  960. 'tcap' => 'application/vnd.3gpp2.tcap',
  961. 'tcl' => 'application/x-tcl',
  962. 'td' => 'application/urc-targetdesc+xml',
  963. 'teacher' => 'application/vnd.smart.teacher',
  964. 'tei' => 'application/tei+xml',
  965. 'teicorpus' => 'application/tei+xml',
  966. 'tex' => 'application/x-tex',
  967. 'texi' => 'application/x-texinfo',
  968. 'texinfo' => 'application/x-texinfo',
  969. 'text' => 'text/plain',
  970. 'tfi' => 'application/thraud+xml',
  971. 'tfm' => 'application/x-tex-tfm',
  972. 'tfx' => 'image/tiff-fx',
  973. 'tga' => 'image/x-tga',
  974. 'tgz' => 'application/x-tar',
  975. 'thmx' => 'application/vnd.ms-officetheme',
  976. 'tif' => 'image/tiff',
  977. 'tiff' => 'image/tiff',
  978. 'tk' => 'application/x-tcl',
  979. 'tmo' => 'application/vnd.tmobile-livetv',
  980. 'toml' => 'application/toml',
  981. 'torrent' => 'application/x-bittorrent',
  982. 'tpl' => 'application/vnd.groove-tool-template',
  983. 'tpt' => 'application/vnd.trid.tpt',
  984. 'tr' => 'text/troff',
  985. 'tra' => 'application/vnd.trueapp',
  986. 'trig' => 'application/trig',
  987. 'trm' => 'application/x-msterminal',
  988. 'ts' => 'video/mp2t',
  989. 'tsd' => 'application/timestamped-data',
  990. 'tsv' => 'text/tab-separated-values',
  991. 'ttc' => 'font/collection',
  992. 'ttf' => 'font/ttf',
  993. 'ttl' => 'text/turtle',
  994. 'ttml' => 'application/ttml+xml',
  995. 'twd' => 'application/vnd.simtech-mindmapper',
  996. 'twds' => 'application/vnd.simtech-mindmapper',
  997. 'txd' => 'application/vnd.genomatix.tuxedo',
  998. 'txf' => 'application/vnd.mobius.txf',
  999. 'txt' => 'text/plain',
  1000. 'u3d' => 'model/u3d',
  1001. 'u8dsn' => 'message/global-delivery-status',
  1002. 'u8hdr' => 'message/global-headers',
  1003. 'u8mdn' => 'message/global-disposition-notification',
  1004. 'u8msg' => 'message/global',
  1005. 'u32' => 'application/x-authorware-bin',
  1006. 'ubj' => 'application/ubjson',
  1007. 'udeb' => 'application/x-debian-package',
  1008. 'ufd' => 'application/vnd.ufdl',
  1009. 'ufdl' => 'application/vnd.ufdl',
  1010. 'ulx' => 'application/x-glulx',
  1011. 'umj' => 'application/vnd.umajin',
  1012. 'unityweb' => 'application/vnd.unity',
  1013. 'uoml' => 'application/vnd.uoml+xml',
  1014. 'uri' => 'text/uri-list',
  1015. 'uris' => 'text/uri-list',
  1016. 'urls' => 'text/uri-list',
  1017. 'usdz' => 'model/vnd.usdz+zip',
  1018. 'ustar' => 'application/x-ustar',
  1019. 'utz' => 'application/vnd.uiq.theme',
  1020. 'uu' => 'text/x-uuencode',
  1021. 'uva' => 'audio/vnd.dece.audio',
  1022. 'uvd' => 'application/vnd.dece.data',
  1023. 'uvf' => 'application/vnd.dece.data',
  1024. 'uvg' => 'image/vnd.dece.graphic',
  1025. 'uvh' => 'video/vnd.dece.hd',
  1026. 'uvi' => 'image/vnd.dece.graphic',
  1027. 'uvm' => 'video/vnd.dece.mobile',
  1028. 'uvp' => 'video/vnd.dece.pd',
  1029. 'uvs' => 'video/vnd.dece.sd',
  1030. 'uvt' => 'application/vnd.dece.ttml+xml',
  1031. 'uvu' => 'video/vnd.uvvu.mp4',
  1032. 'uvv' => 'video/vnd.dece.video',
  1033. 'uvva' => 'audio/vnd.dece.audio',
  1034. 'uvvd' => 'application/vnd.dece.data',
  1035. 'uvvf' => 'application/vnd.dece.data',
  1036. 'uvvg' => 'image/vnd.dece.graphic',
  1037. 'uvvh' => 'video/vnd.dece.hd',
  1038. 'uvvi' => 'image/vnd.dece.graphic',
  1039. 'uvvm' => 'video/vnd.dece.mobile',
  1040. 'uvvp' => 'video/vnd.dece.pd',
  1041. 'uvvs' => 'video/vnd.dece.sd',
  1042. 'uvvt' => 'application/vnd.dece.ttml+xml',
  1043. 'uvvu' => 'video/vnd.uvvu.mp4',
  1044. 'uvvv' => 'video/vnd.dece.video',
  1045. 'uvvx' => 'application/vnd.dece.unspecified',
  1046. 'uvvz' => 'application/vnd.dece.zip',
  1047. 'uvx' => 'application/vnd.dece.unspecified',
  1048. 'uvz' => 'application/vnd.dece.zip',
  1049. 'vbox' => 'application/x-virtualbox-vbox',
  1050. 'vbox-extpack' => 'application/x-virtualbox-vbox-extpack',
  1051. 'vcard' => 'text/vcard',
  1052. 'vcd' => 'application/x-cdlink',
  1053. 'vcf' => 'text/x-vcard',
  1054. 'vcg' => 'application/vnd.groove-vcard',
  1055. 'vcs' => 'text/x-vcalendar',
  1056. 'vcx' => 'application/vnd.vcx',
  1057. 'vdi' => 'application/x-virtualbox-vdi',
  1058. 'vds' => 'model/vnd.sap.vds',
  1059. 'vhd' => 'application/x-virtualbox-vhd',
  1060. 'vis' => 'application/vnd.visionary',
  1061. 'viv' => 'video/vnd.vivo',
  1062. 'vlc' => 'application/videolan',
  1063. 'vmdk' => 'application/x-virtualbox-vmdk',
  1064. 'vob' => 'video/x-ms-vob',
  1065. 'vor' => 'application/vnd.stardivision.writer',
  1066. 'vox' => 'application/x-authorware-bin',
  1067. 'vrml' => 'model/vrml',
  1068. 'vsd' => 'application/vnd.visio',
  1069. 'vsf' => 'application/vnd.vsf',
  1070. 'vss' => 'application/vnd.visio',
  1071. 'vst' => 'application/vnd.visio',
  1072. 'vsw' => 'application/vnd.visio',
  1073. 'vtf' => 'image/vnd.valve.source.texture',
  1074. 'vtt' => 'text/vtt',
  1075. 'vtu' => 'model/vnd.vtu',
  1076. 'vxml' => 'application/voicexml+xml',
  1077. 'w3d' => 'application/x-director',
  1078. 'wad' => 'application/x-doom',
  1079. 'wadl' => 'application/vnd.sun.wadl+xml',
  1080. 'war' => 'application/java-archive',
  1081. 'wasm' => 'application/wasm',
  1082. 'wav' => 'audio/x-wav',
  1083. 'wax' => 'audio/x-ms-wax',
  1084. 'wbmp' => 'image/vnd.wap.wbmp',
  1085. 'wbs' => 'application/vnd.criticaltools.wbs+xml',
  1086. 'wbxml' => 'application/wbxml',
  1087. 'wcm' => 'application/vnd.ms-works',
  1088. 'wdb' => 'application/vnd.ms-works',
  1089. 'wdp' => 'image/vnd.ms-photo',
  1090. 'weba' => 'audio/webm',
  1091. 'webapp' => 'application/x-web-app-manifest+json',
  1092. 'webm' => 'video/webm',
  1093. 'webmanifest' => 'application/manifest+json',
  1094. 'webp' => 'image/webp',
  1095. 'wg' => 'application/vnd.pmi.widget',
  1096. 'wgt' => 'application/widget',
  1097. 'wif' => 'application/watcherinfo+xml',
  1098. 'wks' => 'application/vnd.ms-works',
  1099. 'wm' => 'video/x-ms-wm',
  1100. 'wma' => 'audio/x-ms-wma',
  1101. 'wmd' => 'application/x-ms-wmd',
  1102. 'wmf' => 'image/wmf',
  1103. 'wml' => 'text/vnd.wap.wml',
  1104. 'wmlc' => 'application/wmlc',
  1105. 'wmls' => 'text/vnd.wap.wmlscript',
  1106. 'wmlsc' => 'application/vnd.wap.wmlscriptc',
  1107. 'wmv' => 'video/x-ms-wmv',
  1108. 'wmx' => 'video/x-ms-wmx',
  1109. 'wmz' => 'application/x-msmetafile',
  1110. 'woff' => 'font/woff',
  1111. 'woff2' => 'font/woff2',
  1112. 'word' => 'application/msword',
  1113. 'wpd' => 'application/vnd.wordperfect',
  1114. 'wpl' => 'application/vnd.ms-wpl',
  1115. 'wps' => 'application/vnd.ms-works',
  1116. 'wqd' => 'application/vnd.wqd',
  1117. 'wri' => 'application/x-mswrite',
  1118. 'wrl' => 'model/vrml',
  1119. 'wsc' => 'message/vnd.wfa.wsc',
  1120. 'wsdl' => 'application/wsdl+xml',
  1121. 'wspolicy' => 'application/wspolicy+xml',
  1122. 'wtb' => 'application/vnd.webturbo',
  1123. 'wvx' => 'video/x-ms-wvx',
  1124. 'x3d' => 'model/x3d+xml',
  1125. 'x3db' => 'model/x3d+fastinfoset',
  1126. 'x3dbz' => 'model/x3d+binary',
  1127. 'x3dv' => 'model/x3d-vrml',
  1128. 'x3dvz' => 'model/x3d+vrml',
  1129. 'x3dz' => 'model/x3d+xml',
  1130. 'x32' => 'application/x-authorware-bin',
  1131. 'x_b' => 'model/vnd.parasolid.transmit.binary',
  1132. 'x_t' => 'model/vnd.parasolid.transmit.text',
  1133. 'xaml' => 'application/xaml+xml',
  1134. 'xap' => 'application/x-silverlight-app',
  1135. 'xar' => 'application/vnd.xara',
  1136. 'xav' => 'application/xcap-att+xml',
  1137. 'xbap' => 'application/x-ms-xbap',
  1138. 'xbd' => 'application/vnd.fujixerox.docuworks.binder',
  1139. 'xbm' => 'image/x-xbitmap',
  1140. 'xca' => 'application/xcap-caps+xml',
  1141. 'xcs' => 'application/calendar+xml',
  1142. 'xdf' => 'application/xcap-diff+xml',
  1143. 'xdm' => 'application/vnd.syncml.dm+xml',
  1144. 'xdp' => 'application/vnd.adobe.xdp+xml',
  1145. 'xdssc' => 'application/dssc+xml',
  1146. 'xdw' => 'application/vnd.fujixerox.docuworks',
  1147. 'xel' => 'application/xcap-el+xml',
  1148. 'xenc' => 'application/xenc+xml',
  1149. 'xer' => 'application/patch-ops-error+xml',
  1150. 'xfdf' => 'application/vnd.adobe.xfdf',
  1151. 'xfdl' => 'application/vnd.xfdl',
  1152. 'xht' => 'application/xhtml+xml',
  1153. 'xhtml' => 'application/xhtml+xml',
  1154. 'xhvml' => 'application/xv+xml',
  1155. 'xif' => 'image/vnd.xiff',
  1156. 'xl' => 'application/excel',
  1157. 'xla' => 'application/vnd.ms-excel',
  1158. 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
  1159. 'xlc' => 'application/vnd.ms-excel',
  1160. 'xlf' => 'application/xliff+xml',
  1161. 'xlm' => 'application/vnd.ms-excel',
  1162. 'xls' => 'application/vnd.ms-excel',
  1163. 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
  1164. 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
  1165. 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  1166. 'xlt' => 'application/vnd.ms-excel',
  1167. 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
  1168. 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
  1169. 'xlw' => 'application/vnd.ms-excel',
  1170. 'xm' => 'audio/xm',
  1171. 'xml' => 'application/xml',
  1172. 'xns' => 'application/xcap-ns+xml',
  1173. 'xo' => 'application/vnd.olpc-sugar',
  1174. 'xop' => 'application/xop+xml',
  1175. 'xpi' => 'application/x-xpinstall',
  1176. 'xpl' => 'application/xproc+xml',
  1177. 'xpm' => 'image/x-xpixmap',
  1178. 'xpr' => 'application/vnd.is-xpr',
  1179. 'xps' => 'application/vnd.ms-xpsdocument',
  1180. 'xpw' => 'application/vnd.intercon.formnet',
  1181. 'xpx' => 'application/vnd.intercon.formnet',
  1182. 'xsd' => 'application/xml',
  1183. 'xsl' => 'application/xml',
  1184. 'xslt' => 'application/xslt+xml',
  1185. 'xsm' => 'application/vnd.syncml+xml',
  1186. 'xspf' => 'application/xspf+xml',
  1187. 'xul' => 'application/vnd.mozilla.xul+xml',
  1188. 'xvm' => 'application/xv+xml',
  1189. 'xvml' => 'application/xv+xml',
  1190. 'xwd' => 'image/x-xwindowdump',
  1191. 'xyz' => 'chemical/x-xyz',
  1192. 'xz' => 'application/x-xz',
  1193. 'yaml' => 'text/yaml',
  1194. 'yang' => 'application/yang',
  1195. 'yin' => 'application/yin+xml',
  1196. 'yml' => 'text/yaml',
  1197. 'ymp' => 'text/x-suse-ymp',
  1198. 'z' => 'application/x-compress',
  1199. 'z1' => 'application/x-zmachine',
  1200. 'z2' => 'application/x-zmachine',
  1201. 'z3' => 'application/x-zmachine',
  1202. 'z4' => 'application/x-zmachine',
  1203. 'z5' => 'application/x-zmachine',
  1204. 'z6' => 'application/x-zmachine',
  1205. 'z7' => 'application/x-zmachine',
  1206. 'z8' => 'application/x-zmachine',
  1207. 'zaz' => 'application/vnd.zzazz.deck+xml',
  1208. 'zip' => 'application/zip',
  1209. 'zir' => 'application/vnd.zul',
  1210. 'zirz' => 'application/vnd.zul',
  1211. 'zmm' => 'application/vnd.handheld-entertainment+xml',
  1212. 'zsh' => 'text/x-scriptzsh',
  1213. ];
  1214. /**
  1215. * Determines the mimetype of a file by looking at its extension.
  1216. *
  1217. * @link https://raw.githubusercontent.com/jshttp/mime-db/master/db.json
  1218. */
  1219. public static function fromFilename(string $filename): ?string
  1220. {
  1221. return self::fromExtension(pathinfo($filename, PATHINFO_EXTENSION));
  1222. }
  1223. /**
  1224. * Maps a file extensions to a mimetype.
  1225. *
  1226. * @link https://raw.githubusercontent.com/jshttp/mime-db/master/db.json
  1227. */
  1228. public static function fromExtension(string $extension): ?string
  1229. {
  1230. return self::MIME_TYPES[strtolower($extension)] ?? null;
  1231. }
  1232. }