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