What is a correct MIME type for .docx, .pptx, etc.?

ExcelMs WordMs OfficePowerpointMime Types

Excel Problem Overview


For older *.doc documents, this was enough:

header("Content-Type: application/msword");

What MIME type should I use for new .docx documents? Also, for pptx and xlsx documents?

Excel Solutions


Solution 1 - Excel

Here are the correct Microsoft Office MIME types for HTTP content streaming:

Extension MIME Type
.doc      application/msword
.dot      application/msword

.docx     application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx     application/vnd.openxmlformats-officedocument.wordprocessingml.template
.docm     application/vnd.ms-word.document.macroEnabled.12
.dotm     application/vnd.ms-word.template.macroEnabled.12

.xls      application/vnd.ms-excel
.xlt      application/vnd.ms-excel
.xla      application/vnd.ms-excel

.xlsx     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx     application/vnd.openxmlformats-officedocument.spreadsheetml.template
.xlsm     application/vnd.ms-excel.sheet.macroEnabled.12
.xltm     application/vnd.ms-excel.template.macroEnabled.12
.xlam     application/vnd.ms-excel.addin.macroEnabled.12
.xlsb     application/vnd.ms-excel.sheet.binary.macroEnabled.12

.ppt      application/vnd.ms-powerpoint
.pot      application/vnd.ms-powerpoint
.pps      application/vnd.ms-powerpoint
.ppa      application/vnd.ms-powerpoint

.pptx     application/vnd.openxmlformats-officedocument.presentationml.presentation
.potx     application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx     application/vnd.openxmlformats-officedocument.presentationml.slideshow
.ppam     application/vnd.ms-powerpoint.addin.macroEnabled.12
.pptm     application/vnd.ms-powerpoint.presentation.macroEnabled.12
.potm     application/vnd.ms-powerpoint.template.macroEnabled.12
.ppsm     application/vnd.ms-powerpoint.slideshow.macroEnabled.12

.mdb      application/vnd.ms-access

For further details check out this TechNet article and this blog post.

Solution 2 - Excel

Alternatively, if you're working in .NET v4.5 or above, try using System.Web.MimeMapping.GetMimeMapping(yourFileName) to get MIME types. It is much better than hard-coding strings.

Solution 3 - Excel

Here is the (almost) complete file extensions's MIME in a JSON format.
Just do example: MIME["ppt"], MIME["docx"], etc

{
	"x3d": "application/vnd.hzn-3d-crossword",
	"3gp": "video/3gpp",
	"3g2": "video/3gpp2",
	"mseq": "application/vnd.mseq",
	"pwn": "application/vnd.3m.post-it-notes",
	"plb": "application/vnd.3gpp.pic-bw-large",
	"psb": "application/vnd.3gpp.pic-bw-small",
	"pvb": "application/vnd.3gpp.pic-bw-var",
	"tcap": "application/vnd.3gpp2.tcap",
	"7z": "application/x-7z-compressed",
	"abw": "application/x-abiword",
	"ace": "application/x-ace-compressed",
	"acc": "application/vnd.americandynamics.acc",
	"acu": "application/vnd.acucobol",
	"atc": "application/vnd.acucorp",
	"adp": "audio/adpcm",
	"aab": "application/x-authorware-bin",
	"aam": "application/x-authorware-map",
	"aas": "application/x-authorware-seg",
	"air": "application/vnd.adobe.air-application-installer-package+zip",
	"swf": "application/x-shockwave-flash",
	"fxp": "application/vnd.adobe.fxp",
	"pdf": "application/pdf",
	"ppd": "application/vnd.cups-ppd",
	"dir": "application/x-director",
	"xdp": "application/vnd.adobe.xdp+xml",
	"xfdf": "application/vnd.adobe.xfdf",
	"aac": "audio/x-aac",
	"ahead": "application/vnd.ahead.space",
	"azf": "application/vnd.airzip.filesecure.azf",
	"azs": "application/vnd.airzip.filesecure.azs",
	"azw": "application/vnd.amazon.ebook",
	"ami": "application/vnd.amiga.ami",
	"N/A": "application/andrew-inset",
	"apk": "application/vnd.android.package-archive",
	"cii": "application/vnd.anser-web-certificate-issue-initiation",
	"fti": "application/vnd.anser-web-funds-transfer-initiation",
	"atx": "application/vnd.antix.game-component",
	"dmg": "application/x-apple-diskimage",
	"mpkg": "application/vnd.apple.installer+xml",
	"aw": "application/applixware",
	"mp3": "audio/mpeg",
	"les": "application/vnd.hhe.lesson-player",
	"swi": "application/vnd.aristanetworks.swi",
	"s": "text/x-asm",
	"atomcat": "application/atomcat+xml",
	"atomsvc": "application/atomsvc+xml",
	"atom, .xml": "application/atom+xml",
	"ac": "application/pkix-attr-cert",
	"aif": "audio/x-aiff",
	"avi": "video/x-msvideo",
	"aep": "application/vnd.audiograph",
	"dxf": "image/vnd.dxf",
	"dwf": "model/vnd.dwf",
	"par": "text/plain-bas",
	"bcpio": "application/x-bcpio",
	"bin": "application/octet-stream",
	"bmp": "image/bmp",
	"torrent": "application/x-bittorrent",
	"cod": "application/vnd.rim.cod",
	"mpm": "application/vnd.blueice.multipass",
	"bmi": "application/vnd.bmi",
	"sh": "application/x-sh",
	"btif": "image/prs.btif",
	"rep": "application/vnd.businessobjects",
	"bz": "application/x-bzip",
	"bz2": "application/x-bzip2",
	"csh": "application/x-csh",
	"c": "text/x-c",
	"cdxml": "application/vnd.chemdraw+xml",
	"css": "text/css",
	"cdx": "chemical/x-cdx",
	"cml": "chemical/x-cml",
	"csml": "chemical/x-csml",
	"cdbcmsg": "application/vnd.contact.cmsg",
	"cla": "application/vnd.claymore",
	"c4g": "application/vnd.clonk.c4group",
	"sub": "image/vnd.dvb.subtitle",
	"cdmia": "application/cdmi-capability",
	"cdmic": "application/cdmi-container",
	"cdmid": "application/cdmi-domain",
	"cdmio": "application/cdmi-object",
	"cdmiq": "application/cdmi-queue",
	"c11amc": "application/vnd.cluetrust.cartomobile-config",
	"c11amz": "application/vnd.cluetrust.cartomobile-config-pkg",
	"ras": "image/x-cmu-raster",
	"dae": "model/vnd.collada+xml",
	"csv": "text/csv",
	"cpt": "application/mac-compactpro",
	"wmlc": "application/vnd.wap.wmlc",
	"cgm": "image/cgm",
	"ice": "x-conference/x-cooltalk",
	"cmx": "image/x-cmx",
	"xar": "application/vnd.xara",
	"cmc": "application/vnd.cosmocaller",
	"cpio": "application/x-cpio",
	"clkx": "application/vnd.crick.clicker",
	"clkk": "application/vnd.crick.clicker.keyboard",
	"clkp": "application/vnd.crick.clicker.palette",
	"clkt": "application/vnd.crick.clicker.template",
	"clkw": "application/vnd.crick.clicker.wordbank",
	"wbs": "application/vnd.criticaltools.wbs+xml",
	"cryptonote": "application/vnd.rig.cryptonote",
	"cif": "chemical/x-cif",
	"cmdf": "chemical/x-cmdf",
	"cu": "application/cu-seeme",
	"cww": "application/prs.cww",
	"curl": "text/vnd.curl",
	"dcurl": "text/vnd.curl.dcurl",
	"mcurl": "text/vnd.curl.mcurl",
	"scurl": "text/vnd.curl.scurl",
	"car": "application/vnd.curl.car",
	"pcurl": "application/vnd.curl.pcurl",
	"cmp": "application/vnd.yellowriver-custom-menu",
	"dssc": "application/dssc+der",
	"xdssc": "application/dssc+xml",
	"deb": "application/x-debian-package",
	"uva": "audio/vnd.dece.audio",
	"uvi": "image/vnd.dece.graphic",
	"uvh": "video/vnd.dece.hd",
	"uvm": "video/vnd.dece.mobile",
	"uvu": "video/vnd.uvvu.mp4",
	"uvp": "video/vnd.dece.pd",
	"uvs": "video/vnd.dece.sd",
	"uvv": "video/vnd.dece.video",
	"dvi": "application/x-dvi",
	"seed": "application/vnd.fdsn.seed",
	"dtb": "application/x-dtbook+xml",
	"res": "application/x-dtbresource+xml",
	"ait": "application/vnd.dvb.ait",
	"svc": "application/vnd.dvb.service",
	"eol": "audio/vnd.digital-winds",
	"djvu": "image/vnd.djvu",
	"dtd": "application/xml-dtd",
	"mlp": "application/vnd.dolby.mlp",
	"wad": "application/x-doom",
	"dpg": "application/vnd.dpgraph",
	"dra": "audio/vnd.dra",
	"dfac": "application/vnd.dreamfactory",
	"dts": "audio/vnd.dts",
	"dtshd": "audio/vnd.dts.hd",
	"dwg": "image/vnd.dwg",
	"geo": "application/vnd.dynageo",
	"es": "application/ecmascript",
	"mag": "application/vnd.ecowin.chart",
	"mmr": "image/vnd.fujixerox.edmics-mmr",
	"rlc": "image/vnd.fujixerox.edmics-rlc",
	"exi": "application/exi",
	"mgz": "application/vnd.proteus.magazine",
	"epub": "application/epub+zip",
	"eml": "message/rfc822",
	"nml": "application/vnd.enliven",
	"xpr": "application/vnd.is-xpr",
	"xif": "image/vnd.xiff",
	"xfdl": "application/vnd.xfdl",
	"emma": "application/emma+xml",
	"ez2": "application/vnd.ezpix-album",
	"ez3": "application/vnd.ezpix-package",
	"fst": "image/vnd.fst",
	"fvt": "video/vnd.fvt",
	"fbs": "image/vnd.fastbidsheet",
	"fe_launch": "application/vnd.denovo.fcselayout-link",
	"f4v": "video/x-f4v",
	"flv": "video/x-flv",
	"fpx": "image/vnd.fpx",
	"npx": "image/vnd.net-fpx",
	"flx": "text/vnd.fmi.flexstor",
	"fli": "video/x-fli",
	"ftc": "application/vnd.fluxtime.clip",
	"fdf": "application/vnd.fdf",
	"f": "text/x-fortran",
	"mif": "application/vnd.mif",
	"fm": "application/vnd.framemaker",
	"fh": "image/x-freehand",
	"fsc": "application/vnd.fsc.weblaunch",
	"fnc": "application/vnd.frogans.fnc",
	"ltf": "application/vnd.frogans.ltf",
	"ddd": "application/vnd.fujixerox.ddd",
	"xdw": "application/vnd.fujixerox.docuworks",
	"xbd": "application/vnd.fujixerox.docuworks.binder",
	"oas": "application/vnd.fujitsu.oasys",
	"oa2": "application/vnd.fujitsu.oasys2",
	"oa3": "application/vnd.fujitsu.oasys3",
	"fg5": "application/vnd.fujitsu.oasysgp",
	"bh2": "application/vnd.fujitsu.oasysprs",
	"spl": "application/x-futuresplash",
	"fzs": "application/vnd.fuzzysheet",
	"g3": "image/g3fax",
	"gmx": "application/vnd.gmx",
	"gtw": "model/vnd.gtw",
	"txd": "application/vnd.genomatix.tuxedo",
	"ggb": "application/vnd.geogebra.file",
	"ggt": "application/vnd.geogebra.tool",
	"gdl": "model/vnd.gdl",
	"gex": "application/vnd.geometry-explorer",
	"gxt": "application/vnd.geonext",
	"g2w": "application/vnd.geoplan",
	"g3w": "application/vnd.geospace",
	"gsf": "application/x-font-ghostscript",
	"bdf": "application/x-font-bdf",
	"gtar": "application/x-gtar",
	"texinfo": "application/x-texinfo",
	"gnumeric": "application/x-gnumeric",
	"kml": "application/vnd.google-earth.kml+xml",
	"kmz": "application/vnd.google-earth.kmz",
	"gqf": "application/vnd.grafeq",
	"gif": "image/gif",
	"gv": "text/vnd.graphviz",
	"gac": "application/vnd.groove-account",
	"ghf": "application/vnd.groove-help",
	"gim": "application/vnd.groove-identity-message",
	"grv": "application/vnd.groove-injector",
	"gtm": "application/vnd.groove-tool-message",
	"tpl": "application/vnd.groove-tool-template",
	"vcg": "application/vnd.groove-vcard",
	"h261": "video/h261",
	"h263": "video/h263",
	"h264": "video/h264",
	"hpid": "application/vnd.hp-hpid",
	"hps": "application/vnd.hp-hps",
	"hdf": "application/x-hdf",
	"rip": "audio/vnd.rip",
	"hbci": "application/vnd.hbci",
	"jlt": "application/vnd.hp-jlyt",
	"pcl": "application/vnd.hp-pcl",
	"hpgl": "application/vnd.hp-hpgl",
	"hvs": "application/vnd.yamaha.hv-script",
	"hvd": "application/vnd.yamaha.hv-dic",
	"hvp": "application/vnd.yamaha.hv-voice",
	"sfd-hdstx": "application/vnd.hydrostatix.sof-data",
	"stk": "application/hyperstudio",
	"hal": "application/vnd.hal+xml",
	"html": "text/html",
	"irm": "application/vnd.ibm.rights-management",
	"sc": "application/vnd.ibm.secure-container",
	"ics": "text/calendar",
	"icc": "application/vnd.iccprofile",
	"ico": "image/x-icon",
	"igl": "application/vnd.igloader",
	"ief": "image/ief",
	"ivp": "application/vnd.immervision-ivp",
	"ivu": "application/vnd.immervision-ivu",
	"rif": "application/reginfo+xml",
	"3dml": "text/vnd.in3d.3dml",
	"spot": "text/vnd.in3d.spot",
	"igs": "model/iges",
	"i2g": "application/vnd.intergeo",
	"cdy": "application/vnd.cinderella",
	"xpw": "application/vnd.intercon.formnet",
	"fcs": "application/vnd.isac.fcs",
	"ipfix": "application/ipfix",
	"cer": "application/pkix-cert",
	"pki": "application/pkixcmp",
	"crl": "application/pkix-crl",
	"pkipath": "application/pkix-pkipath",
	"igm": "application/vnd.insors.igm",
	"rcprofile": "application/vnd.ipunplugged.rcprofile",
	"irp": "application/vnd.irepository.package+xml",
	"jad": "text/vnd.sun.j2me.app-descriptor",
	"jar": "application/java-archive",
	"class": "application/java-vm",
	"jnlp": "application/x-java-jnlp-file",
	"ser": "application/java-serialized-object",
	"java": "text/x-java-source,java",
	"js": "application/javascript",
	"json": "application/json",
	"joda": "application/vnd.joost.joda-archive",
	"jpm": "video/jpm",
	"jpeg, .jpg": "image/x-citrix-jpeg",
	"pjpeg": "image/pjpeg",
	"jpgv": "video/jpeg",
	"ktz": "application/vnd.kahootz",
	"mmd": "application/vnd.chipnuts.karaoke-mmd",
	"karbon": "application/vnd.kde.karbon",
	"chrt": "application/vnd.kde.kchart",
	"kfo": "application/vnd.kde.kformula",
	"flw": "application/vnd.kde.kivio",
	"kon": "application/vnd.kde.kontour",
	"kpr": "application/vnd.kde.kpresenter",
	"ksp": "application/vnd.kde.kspread",
	"kwd": "application/vnd.kde.kword",
	"htke": "application/vnd.kenameaapp",
	"kia": "application/vnd.kidspiration",
	"kne": "application/vnd.kinar",
	"sse": "application/vnd.kodak-descriptor",
	"lasxml": "application/vnd.las.las+xml",
	"latex": "application/x-latex",
	"lbd": "application/vnd.llamagraphics.life-balance.desktop",
	"lbe": "application/vnd.llamagraphics.life-balance.exchange+xml",
	"jam": "application/vnd.jam",
	"123": "application/vnd.lotus-1-2-3",
	"apr": "application/vnd.lotus-approach",
	"pre": "application/vnd.lotus-freelance",
	"nsf": "application/vnd.lotus-notes",
	"org": "application/vnd.lotus-organizer",
	"scm": "application/vnd.lotus-screencam",
	"lwp": "application/vnd.lotus-wordpro",
	"lvp": "audio/vnd.lucent.voice",
	"m3u": "audio/x-mpegurl",
	"m4v": "video/x-m4v",
	"hqx": "application/mac-binhex40",
	"portpkg": "application/vnd.macports.portpkg",
	"mgp": "application/vnd.osgeo.mapguide.package",
	"mrc": "application/marc",
	"mrcx": "application/marcxml+xml",
	"mxf": "application/mxf",
	"nbp": "application/vnd.wolfram.player",
	"ma": "application/mathematica",
	"mathml": "application/mathml+xml",
	"mbox": "application/mbox",
	"mc1": "application/vnd.medcalcdata",
	"mscml": "application/mediaservercontrol+xml",
	"cdkey": "application/vnd.mediastation.cdkey",
	"mwf": "application/vnd.mfer",
	"mfm": "application/vnd.mfmp",
	"msh": "model/mesh",
	"mads": "application/mads+xml",
	"mets": "application/mets+xml",
	"mods": "application/mods+xml",
	"meta4": "application/metalink4+xml",
	"mcd": "application/vnd.mcd",
	"flo": "application/vnd.micrografx.flo",
	"igx": "application/vnd.micrografx.igx",
	"es3": "application/vnd.eszigno3+xml",
	"mdb": "application/x-msaccess",
	"asf": "video/x-ms-asf",
	"exe": "application/x-msdownload",
	"cil": "application/vnd.ms-artgalry",
	"cab": "application/vnd.ms-cab-compressed",
	"ims": "application/vnd.ms-ims",
	"application": "application/x-ms-application",
	"clp": "application/x-msclip",
	"mdi": "image/vnd.ms-modi",
	"eot": "application/vnd.ms-fontobject",
	"xls": "application/vnd.ms-excel",
	"xlam": "application/vnd.ms-excel.addin.macroenabled.12",
	"xlsb": "application/vnd.ms-excel.sheet.binary.macroenabled.12",
	"xltm": "application/vnd.ms-excel.template.macroenabled.12",
	"xlsm": "application/vnd.ms-excel.sheet.macroenabled.12",
	"chm": "application/vnd.ms-htmlhelp",
	"crd": "application/x-mscardfile",
	"lrm": "application/vnd.ms-lrm",
	"mvb": "application/x-msmediaview",
	"mny": "application/x-msmoney",
	"pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
	"sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide",
	"ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
	"potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
	"xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
	"xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
	"docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
	"dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
	"obd": "application/x-msbinder",
	"thmx": "application/vnd.ms-officetheme",
	"onetoc": "application/onenote",
	"pya": "audio/vnd.ms-playready.media.pya",
	"pyv": "video/vnd.ms-playready.media.pyv",
	"ppt": "application/vnd.ms-powerpoint",
	"ppam": "application/vnd.ms-powerpoint.addin.macroenabled.12",
	"sldm": "application/vnd.ms-powerpoint.slide.macroenabled.12",
	"pptm": "application/vnd.ms-powerpoint.presentation.macroenabled.12",
	"ppsm": "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
	"potm": "application/vnd.ms-powerpoint.template.macroenabled.12",
	"mpp": "application/vnd.ms-project",
	"pub": "application/x-mspublisher",
	"scd": "application/x-msschedule",
	"xap": "application/x-silverlight-app",
	"stl": "application/vnd.ms-pki.stl",
	"cat": "application/vnd.ms-pki.seccat",
	"vsd": "application/vnd.visio",
	"vsdx": "application/vnd.visio2013",
	"wm": "video/x-ms-wm",
	"wma": "audio/x-ms-wma",
	"wax": "audio/x-ms-wax",
	"wmx": "video/x-ms-wmx",
	"wmd": "application/x-ms-wmd",
	"wpl": "application/vnd.ms-wpl",
	"wmz": "application/x-ms-wmz",
	"wmv": "video/x-ms-wmv",
	"wvx": "video/x-ms-wvx",
	"wmf": "application/x-msmetafile",
	"trm": "application/x-msterminal",
	"doc": "application/msword",
	"docm": "application/vnd.ms-word.document.macroenabled.12",
	"dotm": "application/vnd.ms-word.template.macroenabled.12",
	"wri": "application/x-mswrite",
	"wps": "application/vnd.ms-works",
	"xbap": "application/x-ms-xbap",
	"xps": "application/vnd.ms-xpsdocument",
	"mid": "audio/midi",
	"mpy": "application/vnd.ibm.minipay",
	"afp": "application/vnd.ibm.modcap",
	"rms": "application/vnd.jcp.javame.midlet-rms",
	"tmo": "application/vnd.tmobile-livetv",
	"prc": "application/x-mobipocket-ebook",
	"mbk": "application/vnd.mobius.mbk",
	"dis": "application/vnd.mobius.dis",
	"plc": "application/vnd.mobius.plc",
	"mqy": "application/vnd.mobius.mqy",
	"msl": "application/vnd.mobius.msl",
	"txf": "application/vnd.mobius.txf",
	"daf": "application/vnd.mobius.daf",
	"fly": "text/vnd.fly",
	"mpc": "application/vnd.mophun.certificate",
	"mpn": "application/vnd.mophun.application",
	"mj2": "video/mj2",
	"mpga": "audio/mpeg",
	"mxu": "video/vnd.mpegurl",
	"mpeg": "video/mpeg",
	"m21": "application/mp21",
	"mp4a": "audio/mp4",
	"mp4": "application/mp4",
	"m3u8": "application/vnd.apple.mpegurl",
	"mus": "application/vnd.musician",
	"msty": "application/vnd.muvee.style",
	"mxml": "application/xv+xml",
	"ngdat": "application/vnd.nokia.n-gage.data",
	"n-gage": "application/vnd.nokia.n-gage.symbian.install",
	"ncx": "application/x-dtbncx+xml",
	"nc": "application/x-netcdf",
	"nlu": "application/vnd.neurolanguage.nlu",
	"dna": "application/vnd.dna",
	"nnd": "application/vnd.noblenet-directory",
	"nns": "application/vnd.noblenet-sealer",
	"nnw": "application/vnd.noblenet-web",
	"rpst": "application/vnd.nokia.radio-preset",
	"rpss": "application/vnd.nokia.radio-presets",
	"n3": "text/n3",
	"edm": "application/vnd.novadigm.edm",
	"edx": "application/vnd.novadigm.edx",
	"ext": "application/vnd.novadigm.ext",
	"gph": "application/vnd.flographit",
	"ecelp4800": "audio/vnd.nuera.ecelp4800",
	"ecelp7470": "audio/vnd.nuera.ecelp7470",
	"ecelp9600": "audio/vnd.nuera.ecelp9600",
	"oda": "application/oda",
	"ogx": "application/ogg",
	"oga": "audio/ogg",
	"ogv": "video/ogg",
	"dd2": "application/vnd.oma.dd2+xml",
	"oth": "application/vnd.oasis.opendocument.text-web",
	"opf": "application/oebps-package+xml",
	"qbo": "application/vnd.intu.qbo",
	"oxt": "application/vnd.openofficeorg.extension",
	"osf": "application/vnd.yamaha.openscoreformat",
	"weba": "audio/webm",
	"webm": "video/webm",
	"odc": "application/vnd.oasis.opendocument.chart",
	"otc": "application/vnd.oasis.opendocument.chart-template",
	"odb": "application/vnd.oasis.opendocument.database",
	"odf": "application/vnd.oasis.opendocument.formula",
	"odft": "application/vnd.oasis.opendocument.formula-template",
	"odg": "application/vnd.oasis.opendocument.graphics",
	"otg": "application/vnd.oasis.opendocument.graphics-template",
	"odi": "application/vnd.oasis.opendocument.image",
	"oti": "application/vnd.oasis.opendocument.image-template",
	"odp": "application/vnd.oasis.opendocument.presentation",
	"otp": "application/vnd.oasis.opendocument.presentation-template",
	"ods": "application/vnd.oasis.opendocument.spreadsheet",
	"ots": "application/vnd.oasis.opendocument.spreadsheet-template",
	"odt": "application/vnd.oasis.opendocument.text",
	"odm": "application/vnd.oasis.opendocument.text-master",
	"ott": "application/vnd.oasis.opendocument.text-template",
	"ktx": "image/ktx",
	"sxc": "application/vnd.sun.xml.calc",
	"stc": "application/vnd.sun.xml.calc.template",
	"sxd": "application/vnd.sun.xml.draw",
	"std": "application/vnd.sun.xml.draw.template",
	"sxi": "application/vnd.sun.xml.impress",
	"sti": "application/vnd.sun.xml.impress.template",
	"sxm": "application/vnd.sun.xml.math",
	"sxw": "application/vnd.sun.xml.writer",
	"sxg": "application/vnd.sun.xml.writer.global",
	"stw": "application/vnd.sun.xml.writer.template",
	"otf": "application/x-font-otf",
	"osfpvg": "application/vnd.yamaha.openscoreformat.osfpvg+xml",
	"dp": "application/vnd.osgi.dp",
	"pdb": "application/vnd.palm",
	"p": "text/x-pascal",
	"paw": "application/vnd.pawaafile",
	"pclxl": "application/vnd.hp-pclxl",
	"efif": "application/vnd.picsel",
	"pcx": "image/x-pcx",
	"psd": "image/vnd.adobe.photoshop",
	"prf": "application/pics-rules",
	"pic": "image/x-pict",
	"chat": "application/x-chat",
	"p10": "application/pkcs10",
	"p12": "application/x-pkcs12",
	"p7m": "application/pkcs7-mime",
	"p7s": "application/pkcs7-signature",
	"p7r": "application/x-pkcs7-certreqresp",
	"p7b": "application/x-pkcs7-certificates",
	"p8": "application/pkcs8",
	"plf": "application/vnd.pocketlearn",
	"pnm": "image/x-portable-anymap",
	"pbm": "image/x-portable-bitmap",
	"pcf": "application/x-font-pcf",
	"pfr": "application/font-tdpfr",
	"pgn": "application/x-chess-pgn",
	"pgm": "image/x-portable-graymap",
	"png": "image/x-png",
	"ppm": "image/x-portable-pixmap",
	"pskcxml": "application/pskc+xml",
	"pml": "application/vnd.ctc-posml",
	"ai": "application/postscript",
	"pfa": "application/x-font-type1",
	"pbd": "application/vnd.powerbuilder6",
	"pgp": "application/pgp-signature",
	"box": "application/vnd.previewsystems.box",
	"ptid": "application/vnd.pvi.ptid1",
	"pls": "application/pls+xml",
	"str": "application/vnd.pg.format",
	"ei6": "application/vnd.pg.osasli",
	"dsc": "text/prs.lines.tag",
	"psf": "application/x-font-linux-psf",
	"qps": "application/vnd.publishare-delta-tree",
	"wg": "application/vnd.pmi.widget",
	"qxd": "application/vnd.quark.quarkxpress",
	"esf": "application/vnd.epson.esf",
	"msf": "application/vnd.epson.msf",
	"ssf": "application/vnd.epson.ssf",
	"qam": "application/vnd.epson.quickanime",
	"qfx": "application/vnd.intu.qfx",
	"qt": "video/quicktime",
	"rar": "application/x-rar-compressed",
	"ram": "audio/x-pn-realaudio",
	"rmp": "audio/x-pn-realaudio-plugin",
	"rsd": "application/rsd+xml",
	"rm": "application/vnd.rn-realmedia",
	"bed": "application/vnd.realvnc.bed",
	"mxl": "application/vnd.recordare.musicxml",
	"musicxml": "application/vnd.recordare.musicxml+xml",
	"rnc": "application/relax-ng-compact-syntax",
	"rdz": "application/vnd.data-vision.rdz",
	"rdf": "application/rdf+xml",
	"rp9": "application/vnd.cloanto.rp9",
	"jisp": "application/vnd.jisp",
	"rtf": "application/rtf",
	"rtx": "text/richtext",
	"link66": "application/vnd.route66.link66+xml",
	"rss, .xml": "application/rss+xml",
	"shf": "application/shf+xml",
	"st": "application/vnd.sailingtracker.track",
	"svg": "image/svg+xml",
	"sus": "application/vnd.sus-calendar",
	"sru": "application/sru+xml",
	"setpay": "application/set-payment-initiation",
	"setreg": "application/set-registration-initiation",
	"sema": "application/vnd.sema",
	"semd": "application/vnd.semd",
	"semf": "application/vnd.semf",
	"see": "application/vnd.seemail",
	"snf": "application/x-font-snf",
	"spq": "application/scvp-vp-request",
	"spp": "application/scvp-vp-response",
	"scq": "application/scvp-cv-request",
	"scs": "application/scvp-cv-response",
	"sdp": "application/sdp",
	"etx": "text/x-setext",
	"movie": "video/x-sgi-movie",
	"ifm": "application/vnd.shana.informed.formdata",
	"itp": "application/vnd.shana.informed.formtemplate",
	"iif": "application/vnd.shana.informed.interchange",
	"ipk": "application/vnd.shana.informed.package",
	"tfi": "application/thraud+xml",
	"shar": "application/x-shar",
	"rgb": "image/x-rgb",
	"slt": "application/vnd.epson.salt",
	"aso": "application/vnd.accpac.simply.aso",
	"imp": "application/vnd.accpac.simply.imp",
	"twd": "application/vnd.simtech-mindmapper",
	"csp": "application/vnd.commonspace",
	"saf": "application/vnd.yamaha.smaf-audio",
	"mmf": "application/vnd.smaf",
	"spf": "application/vnd.yamaha.smaf-phrase",
	"teacher": "application/vnd.smart.teacher",
	"svd": "application/vnd.svd",
	"rq": "application/sparql-query",
	"srx": "application/sparql-results+xml",
	"gram": "application/srgs",
	"grxml": "application/srgs+xml",
	"ssml": "application/ssml+xml",
	"skp": "application/vnd.koan",
	"sgml": "text/sgml",
	"sdc": "application/vnd.stardivision.calc",
	"sda": "application/vnd.stardivision.draw",
	"sdd": "application/vnd.stardivision.impress",
	"smf": "application/vnd.stardivision.math",
	"sdw": "application/vnd.stardivision.writer",
	"sgl": "application/vnd.stardivision.writer-global",
	"sm": "application/vnd.stepmania.stepchart",
	"sit": "application/x-stuffit",
	"sitx": "application/x-stuffitx",
	"sdkm": "application/vnd.solent.sdkm+xml",
	"xo": "application/vnd.olpc-sugar",
	"au": "audio/basic",
	"wqd": "application/vnd.wqd",
	"sis": "application/vnd.symbian.install",
	"smi": "application/smil+xml",
	"xsm": "application/vnd.syncml+xml",
	"bdm": "application/vnd.syncml.dm+wbxml",
	"xdm": "application/vnd.syncml.dm+xml",
	"sv4cpio": "application/x-sv4cpio",
	"sv4crc": "application/x-sv4crc",
	"sbml": "application/sbml+xml",
	"tsv": "text/tab-separated-values",
	"tiff": "image/tiff",
	"tao": "application/vnd.tao.intent-module-archive",
	"tar": "application/x-tar",
	"tcl": "application/x-tcl",
	"tex": "application/x-tex",
	"tfm": "application/x-tex-tfm",
	"tei": "application/tei+xml",
	"txt": "text/plain",
	"dxp": "application/vnd.spotfire.dxp",
	"sfs": "application/vnd.spotfire.sfs",
	"tsd": "application/timestamped-data",
	"tpt": "application/vnd.trid.tpt",
	"mxs": "application/vnd.triscape.mxs",
	"t": "text/troff",
	"tra": "application/vnd.trueapp",
	"ttf": "application/x-font-ttf",
	"ttl": "text/turtle",
	"umj": "application/vnd.umajin",
	"uoml": "application/vnd.uoml+xml",
	"unityweb": "application/vnd.unity",
	"ufd": "application/vnd.ufdl",
	"uri": "text/uri-list",
	"utz": "application/vnd.uiq.theme",
	"ustar": "application/x-ustar",
	"uu": "text/x-uuencode",
	"vcs": "text/x-vcalendar",
	"vcf": "text/x-vcard",
	"vcd": "application/x-cdlink",
	"vsf": "application/vnd.vsf",
	"wrl": "model/vrml",
	"vcx": "application/vnd.vcx",
	"mts": "model/vnd.mts",
	"vtu": "model/vnd.vtu",
	"vis": "application/vnd.visionary",
	"viv": "video/vnd.vivo",
	"ccxml": "application/ccxml+xml,",
	"vxml": "application/voicexml+xml",
	"src": "application/x-wais-source",
	"wbxml": "application/vnd.wap.wbxml",
	"wbmp": "image/vnd.wap.wbmp",
	"wav": "audio/x-wav",
	"davmount": "application/davmount+xml",
	"woff": "application/x-font-woff",
	"wspolicy": "application/wspolicy+xml",
	"webp": "image/webp",
	"wtb": "application/vnd.webturbo",
	"wgt": "application/widget",
	"hlp": "application/winhlp",
	"wml": "text/vnd.wap.wml",
	"wmls": "text/vnd.wap.wmlscript",
	"wmlsc": "application/vnd.wap.wmlscriptc",
	"wpd": "application/vnd.wordperfect",
	"stf": "application/vnd.wt.stf",
	"wsdl": "application/wsdl+xml",
	"xbm": "image/x-xbitmap",
	"xpm": "image/x-xpixmap",
	"xwd": "image/x-xwindowdump",
	"der": "application/x-x509-ca-cert",
	"fig": "application/x-xfig",
	"xhtml": "application/xhtml+xml",
	"xml": "application/xml",
	"xdf": "application/xcap-diff+xml",
	"xenc": "application/xenc+xml",
	"xer": "application/patch-ops-error+xml",
	"rl": "application/resource-lists+xml",
	"rs": "application/rls-services+xml",
	"rld": "application/resource-lists-diff+xml",
	"xslt": "application/xslt+xml",
	"xop": "application/xop+xml",
	"xpi": "application/x-xpinstall",
	"xspf": "application/xspf+xml",
	"xul": "application/vnd.mozilla.xul+xml",
	"xyz": "chemical/x-xyz",
	"yaml": "text/yaml",
	"yang": "application/yang",
	"yin": "application/yin+xml",
	"zir": "application/vnd.zul",
	"zip": "application/zip",
	"zmm": "application/vnd.handheld-entertainment+xml",
	"zaz": "application/vnd.zzazz.deck+xml"
}

Solution 4 - Excel

A working method in android to populates the mapping list mime types.

private static void fileMimeTypeMapping() {
     MIMETYPE_MAPPING.put("3gp", Collections.list("video/3gpp"));
     MIMETYPE_MAPPING.put("7z", Collections.list("application/x-7z-compressed"));
     MIMETYPE_MAPPING.put("accdb", Collections.list("application/msaccess"));
     MIMETYPE_MAPPING.put("ai", Collections.list("application/illustrator"));
     MIMETYPE_MAPPING.put("apk", Collections.list("application/vnd.android.package-archive"));
     MIMETYPE_MAPPING.put("arw", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("avi", Collections.list("video/x-msvideo"));
     MIMETYPE_MAPPING.put("bash", Collections.list("text/x-shellscript"));
     MIMETYPE_MAPPING.put("bat", Collections.list("application/x-msdos-program"));
     MIMETYPE_MAPPING.put("blend", Collections.list("application/x-blender"));
     MIMETYPE_MAPPING.put("bin", Collections.list("application/x-bin"));
     MIMETYPE_MAPPING.put("bmp", Collections.list("image/bmp"));
     MIMETYPE_MAPPING.put("bpg", Collections.list("image/bpg"));
     MIMETYPE_MAPPING.put("bz2", Collections.list("application/x-bzip2"));
     MIMETYPE_MAPPING.put("cb7", Collections.list("application/x-cbr"));
     MIMETYPE_MAPPING.put("cba", Collections.list("application/x-cbr"));
     MIMETYPE_MAPPING.put("cbr", Collections.list("application/x-cbr"));
     MIMETYPE_MAPPING.put("cbt", Collections.list("application/x-cbr"));
     MIMETYPE_MAPPING.put("cbtc", Collections.list("application/x-cbr"));
     MIMETYPE_MAPPING.put("cbz", Collections.list("application/x-cbr"));
     MIMETYPE_MAPPING.put("cc", Collections.list("text/x-c"));
     MIMETYPE_MAPPING.put("cdr", Collections.list("application/coreldraw"));
     MIMETYPE_MAPPING.put("class", Collections.list("application/java"));
     MIMETYPE_MAPPING.put("cnf", Collections.list("text/plain"));
     MIMETYPE_MAPPING.put("conf", Collections.list("text/plain"));
     MIMETYPE_MAPPING.put("cpp", Collections.list("text/x-c++src"));
     MIMETYPE_MAPPING.put("cr2", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("css", Collections.list("text/css"));
     MIMETYPE_MAPPING.put("csv", Collections.list("text/csv"));
     MIMETYPE_MAPPING.put("cvbdl", Collections.list("application/x-cbr"));
     MIMETYPE_MAPPING.put("c", Collections.list("text/x-c"));
     MIMETYPE_MAPPING.put("c++", Collections.list("text/x-c++src"));
     MIMETYPE_MAPPING.put("dcr", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("deb", Collections.list("application/x-deb"));
     MIMETYPE_MAPPING.put("dng", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("doc", Collections.list("application/msword"));
     MIMETYPE_MAPPING.put("docm", Collections.list("application/vnd.ms-word.document.macroEnabled.12"));
     MIMETYPE_MAPPING.put("docx", Collections.list("application/vnd.openxmlformats-officedocument.wordprocessingml.document"));
     MIMETYPE_MAPPING.put("dot", Collections.list("application/msword"));
     MIMETYPE_MAPPING.put("dotx", Collections.list("application/vnd.openxmlformats-officedocument.wordprocessingml.template"));
     MIMETYPE_MAPPING.put("dv", Collections.list("video/dv"));
     MIMETYPE_MAPPING.put("eot", Collections.list("application/vnd.ms-fontobject"));
     MIMETYPE_MAPPING.put("epub", Collections.list("application/epub+zip"));
     MIMETYPE_MAPPING.put("eps", Collections.list("application/postscript"));
     MIMETYPE_MAPPING.put("erf", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("exe", Collections.list("application/x-ms-dos-executable"));
     MIMETYPE_MAPPING.put("flac", Collections.list("audio/flac"));
     MIMETYPE_MAPPING.put("flv", Collections.list("video/x-flv"));
     MIMETYPE_MAPPING.put("gif", Collections.list("image/gif"));
     MIMETYPE_MAPPING.put("gpx", Collections.list("application/gpx+xml"));
     MIMETYPE_MAPPING.put("gz", Collections.list("application/gzip"));
     MIMETYPE_MAPPING.put("gzip", Collections.list("application/gzip"));
     MIMETYPE_MAPPING.put("h", Collections.list("text/x-h"));
     MIMETYPE_MAPPING.put("heic", Collections.list("image/heic"));
     MIMETYPE_MAPPING.put("heif", Collections.list("image/heif"));
     MIMETYPE_MAPPING.put("hh", Collections.list("text/x-h"));
     MIMETYPE_MAPPING.put("hpp", Collections.list("text/x-h"));
     MIMETYPE_MAPPING.put("htaccess", Collections.list("text/plain"));
     MIMETYPE_MAPPING.put("ical", Collections.list("text/calendar"));
     MIMETYPE_MAPPING.put("ics", Collections.list("text/calendar"));
     MIMETYPE_MAPPING.put("iiq", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("impress", Collections.list("text/impress"));
     MIMETYPE_MAPPING.put("java", Collections.list("text/x-java-source"));
     MIMETYPE_MAPPING.put("jp2", Collections.list("image/jp2"));
     MIMETYPE_MAPPING.put("jpeg", Collections.list("image/jpeg"));
     MIMETYPE_MAPPING.put("jpg", Collections.list("image/jpeg"));
     MIMETYPE_MAPPING.put("jps", Collections.list("image/jpeg"));
     MIMETYPE_MAPPING.put("k25", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("kdc", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("key", Collections.list("application/x-iwork-keynote-sffkey"));
     MIMETYPE_MAPPING.put("keynote", Collections.list("application/x-iwork-keynote-sffkey"));
     MIMETYPE_MAPPING.put("kml", Collections.list("application/vnd.google-earth.kml+xml"));
     MIMETYPE_MAPPING.put("kmz", Collections.list("application/vnd.google-earth.kmz"));
     MIMETYPE_MAPPING.put("kra", Collections.list("application/x-krita"));
     MIMETYPE_MAPPING.put("ldif", Collections.list("text/x-ldif"));
     MIMETYPE_MAPPING.put("love", Collections.list("application/x-love-game"));
     MIMETYPE_MAPPING.put("lwp", Collections.list("application/vnd.lotus-wordpro"));
     MIMETYPE_MAPPING.put("m2t", Collections.list("video/mp2t"));
     MIMETYPE_MAPPING.put("m3u", Collections.list("audio/mpegurl"));
     MIMETYPE_MAPPING.put("m3u8", Collections.list("audio/mpegurl"));
     MIMETYPE_MAPPING.put("m4a", Collections.list("audio/mp4"));
     MIMETYPE_MAPPING.put("m4b", Collections.list("audio/m4b"));
     MIMETYPE_MAPPING.put("m4v", Collections.list("video/mp4"));
     MIMETYPE_MAPPING.put("markdown", Collections.list(MIMETYPE_TEXT_MARKDOWN));
     MIMETYPE_MAPPING.put("mdown", Collections.list(MIMETYPE_TEXT_MARKDOWN));
     MIMETYPE_MAPPING.put("md", Collections.list(MIMETYPE_TEXT_MARKDOWN));
     MIMETYPE_MAPPING.put("mdb", Collections.list("application/msaccess"));
     MIMETYPE_MAPPING.put("mdwn", Collections.list(MIMETYPE_TEXT_MARKDOWN));
     MIMETYPE_MAPPING.put("mkd", Collections.list(MIMETYPE_TEXT_MARKDOWN));
     MIMETYPE_MAPPING.put("mef", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("mkv", Collections.list("video/x-matroska"));
     MIMETYPE_MAPPING.put("mobi", Collections.list("application/x-mobipocket-ebook"));
     MIMETYPE_MAPPING.put("mov", Collections.list("video/quicktime"));
     MIMETYPE_MAPPING.put("mp3", Collections.list("audio/mpeg"));
     MIMETYPE_MAPPING.put("mp4", Collections.list("video/mp4"));
     MIMETYPE_MAPPING.put("mpeg", Collections.list("video/mpeg"));
     MIMETYPE_MAPPING.put("mpg", Collections.list("video/mpeg"));
     MIMETYPE_MAPPING.put("mpo", Collections.list("image/jpeg"));
     MIMETYPE_MAPPING.put("msi", Collections.list("application/x-msi"));
     MIMETYPE_MAPPING.put("mts", Collections.list("video/MP2T"));
     MIMETYPE_MAPPING.put("mt2s", Collections.list("video/MP2T"));
     MIMETYPE_MAPPING.put("nef", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("numbers", Collections.list("application/x-iwork-numbers-sffnumbers"));
     MIMETYPE_MAPPING.put("odf", Collections.list("application/vnd.oasis.opendocument.formula"));
     MIMETYPE_MAPPING.put("odg", Collections.list("application/vnd.oasis.opendocument.graphics"));
     MIMETYPE_MAPPING.put("odp", Collections.list("application/vnd.oasis.opendocument.presentation"));
     MIMETYPE_MAPPING.put("ods", Collections.list("application/vnd.oasis.opendocument.spreadsheet"));
     MIMETYPE_MAPPING.put("odt", Collections.list("application/vnd.oasis.opendocument.text"));
     MIMETYPE_MAPPING.put("oga", Collections.list("audio/ogg"));
     MIMETYPE_MAPPING.put("ogg", Collections.list("audio/ogg"));
     MIMETYPE_MAPPING.put("ogv", Collections.list("video/ogg"));
     MIMETYPE_MAPPING.put("one", Collections.list("application/msonenote"));
     MIMETYPE_MAPPING.put("opus", Collections.list("audio/ogg"));
     MIMETYPE_MAPPING.put("orf", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("otf", Collections.list("application/font-sfnt"));
     MIMETYPE_MAPPING.put("pages", Collections.list("application/x-iwork-pages-sffpages"));
     MIMETYPE_MAPPING.put("pdf", Collections.list("application/pdf"));
     MIMETYPE_MAPPING.put("pfb", Collections.list("application/x-font"));
     MIMETYPE_MAPPING.put("pef", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("php", Collections.list("application/x-php"));
     MIMETYPE_MAPPING.put("pl", Collections.list("application/x-perl"));
     MIMETYPE_MAPPING.put("pls", Collections.list("audio/x-scpls"));
     MIMETYPE_MAPPING.put("png", Collections.list("image/png"));
     MIMETYPE_MAPPING.put("pot", Collections.list("application/vnd.ms-powerpoint"));
     MIMETYPE_MAPPING.put("potm", Collections.list("application/vnd.ms-powerpoint.template.macroEnabled.12"));
     MIMETYPE_MAPPING.put("potx", Collections.list("application/vnd.openxmlformats-officedocument.presentationml.template"));
     MIMETYPE_MAPPING.put("ppa", Collections.list("application/vnd.ms-powerpoint"));
     MIMETYPE_MAPPING.put("ppam", Collections.list("application/vnd.ms-powerpoint.addin.macroEnabled.12"));
     MIMETYPE_MAPPING.put("pps", Collections.list("application/vnd.ms-powerpoint"));
     MIMETYPE_MAPPING.put("ppsm", Collections.list("application/vnd.ms-powerpoint.slideshow.macroEnabled.12"));
     MIMETYPE_MAPPING.put("ppsx", Collections.list("application/vnd.openxmlformats-officedocument.presentationml.slideshow"));
     MIMETYPE_MAPPING.put("ppt", Collections.list("application/vnd.ms-powerpoint"));
     MIMETYPE_MAPPING.put("pptm", Collections.list("application/vnd.ms-powerpoint.presentation.macroEnabled.12"));
     MIMETYPE_MAPPING.put("pptx", Collections.list("application/vnd.openxmlformats-officedocument.presentationml.presentation"));
     MIMETYPE_MAPPING.put("ps", Collections.list("application/postscript"));
     MIMETYPE_MAPPING.put("psd", Collections.list("application/x-photoshop"));
     MIMETYPE_MAPPING.put("py", Collections.list("text/x-python"));
     MIMETYPE_MAPPING.put("raf", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("rar", Collections.list("application/x-rar-compressed"));
     MIMETYPE_MAPPING.put("reveal", Collections.list("text/reveal"));
     MIMETYPE_MAPPING.put("rss", Collections.list("application/rss+xml"));
     MIMETYPE_MAPPING.put("rtf", Collections.list("application/rtf"));
     MIMETYPE_MAPPING.put("rw2", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("schema", Collections.list("text/plain"));
     MIMETYPE_MAPPING.put("sgf", Collections.list("application/sgf"));
     MIMETYPE_MAPPING.put("sh-lib", Collections.list("text/x-shellscript"));
     MIMETYPE_MAPPING.put("sh", Collections.list("text/x-shellscript"));
     MIMETYPE_MAPPING.put("srf", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("sr2", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("tar", Collections.list("application/x-tar"));
     MIMETYPE_MAPPING.put("tar.bz2", Collections.list("application/x-bzip2"));
     MIMETYPE_MAPPING.put("tar.gz", Collections.list("application/x-compressed"));
     MIMETYPE_MAPPING.put("tbz2", Collections.list("application/x-bzip2"));
     MIMETYPE_MAPPING.put("tcx", Collections.list("application/vnd.garmin.tcx+xml"));
     MIMETYPE_MAPPING.put("tex", Collections.list("application/x-tex"));
     MIMETYPE_MAPPING.put("tgz", Collections.list("application/x-compressed"));
     MIMETYPE_MAPPING.put("tiff", Collections.list("image/tiff"));
     MIMETYPE_MAPPING.put("tif", Collections.list("image/tiff"));
     MIMETYPE_MAPPING.put("ttf", Collections.list("application/font-sfnt"));
     MIMETYPE_MAPPING.put("txt", Collections.list("text/plain"));
     MIMETYPE_MAPPING.put("vcard", Collections.list("text/vcard"));
     MIMETYPE_MAPPING.put("vcf", Collections.list("text/vcard"));
     MIMETYPE_MAPPING.put("vob", Collections.list("video/dvd"));
     MIMETYPE_MAPPING.put("vsd", Collections.list("application/vnd.visio"));
     MIMETYPE_MAPPING.put("vsdm", Collections.list("application/vnd.ms-visio.drawing.macroEnabled.12"));
     MIMETYPE_MAPPING.put("vsdx", Collections.list("application/vnd.ms-visio.drawing"));
     MIMETYPE_MAPPING.put("vssm", Collections.list("application/vnd.ms-visio.stencil.macroEnabled.12"));
     MIMETYPE_MAPPING.put("vssx", Collections.list("application/vnd.ms-visio.stencil"));
     MIMETYPE_MAPPING.put("vstm", Collections.list("application/vnd.ms-visio.template.macroEnabled.12"));
     MIMETYPE_MAPPING.put("vstx", Collections.list("application/vnd.ms-visio.template"));
     MIMETYPE_MAPPING.put("wav", Collections.list("audio/wav"));
     MIMETYPE_MAPPING.put("webm", Collections.list("video/webm"));
     MIMETYPE_MAPPING.put("woff", Collections.list("application/font-woff"));
     MIMETYPE_MAPPING.put("wpd", Collections.list("application/vnd.wordperfect"));
     MIMETYPE_MAPPING.put("wmv", Collections.list("video/x-ms-wmv"));
     MIMETYPE_MAPPING.put("xcf", Collections.list("application/x-gimp"));
     MIMETYPE_MAPPING.put("xla", Collections.list("application/vnd.ms-excel"));
     MIMETYPE_MAPPING.put("xlam", Collections.list("application/vnd.ms-excel.addin.macroEnabled.12"));
     MIMETYPE_MAPPING.put("xls", Collections.list("application/vnd.ms-excel"));
     MIMETYPE_MAPPING.put("xlsb", Collections.list("application/vnd.ms-excel.sheet.binary.macroEnabled.12"));
     MIMETYPE_MAPPING.put("xlsm", Collections.list("application/vnd.ms-excel.sheet.macroEnabled.12"));
     MIMETYPE_MAPPING.put("xlsx", Collections.list("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
     MIMETYPE_MAPPING.put("xlt", Collections.list("application/vnd.ms-excel"));
     MIMETYPE_MAPPING.put("xltm", Collections.list("application/vnd.ms-excel.template.macroEnabled.12"));
     MIMETYPE_MAPPING.put("xltx", Collections.list("application/vnd.openxmlformats-officedocument.spreadsheetml.template"));
     MIMETYPE_MAPPING.put("xrf", Collections.list("image/x-dcraw"));
     MIMETYPE_MAPPING.put("yaml", Arrays.asList("application/yaml", "text/plain"));
     MIMETYPE_MAPPING.put("yml", Arrays.asList("application/yaml", "text/plain"));
     MIMETYPE_MAPPING.put("zip", Collections.list("application/zip"));
     MIMETYPE_MAPPING.put("url", Collections.list("application/internet-shortcut"));
     MIMETYPE_MAPPING.put("webloc", Collections.list("application/internet-shortcut"));
	 MIMETYPE_MAPPING.put("js", Arrays.asList("application/javascript", "text/plain"));
     MIMETYPE_MAPPING.put("json", Arrays.asList("application/json", "text/plain"));
	 MIMETYPE_MAPPING.put("fb2", Arrays.asList("application/x-fictionbook+xml", "text/plain"));
	 MIMETYPE_MAPPING.put("html", Arrays.asList("text/html", "text/plain"));
     MIMETYPE_MAPPING.put("htm", Arrays.asList("text/html", "text/plain"));
	 MIMETYPE_MAPPING.put("m", Arrays.asList("text/x-matlab", "text/plain"));
	 MIMETYPE_MAPPING.put("svg", Arrays.asList("image/svg+xml", "text/plain"));
     MIMETYPE_MAPPING.put("swf", Arrays.asList("application/x-shockwave-flash", "application/octet-stream"));
	 MIMETYPE_MAPPING.put("xml", Arrays.asList("application/xml", "text/plain"));
     
}

Solution 5 - Excel

This post will explore various approaches of fetching MIME Type across various programming languages with their CONS in one-line description as header. So, use them accordingly and the one which works for you.

For eg. the code below is especially helpful when user may supply either of .xls, .xlsx or .xlsm and you don't want to write code testing extension and supplying MIME-type for each of them. Let the system do this job.

Python 3

Using python-magic
>>> pip install python-magic
>>> import magic
>>> magic.from_file("Employee.pdf", mime=True)
'application/pdf'
Using built-in mimeypes module - Map filenames to MimeTypes modules
>>> import mimetypes
>>> mimetypes.init()
>>> mimetypes.knownfiles
['/etc/mime.types', '/etc/httpd/mime.types', ... ]
>>> mimetypes.suffix_map['.tgz']
'.tar.gz'
>>> mimetypes.encodings_map['.gz']
'gzip'
>>> mimetypes.types_map['.tgz']
'application/x-tar-gz'

JAVA 7

Source: Baeldung's blog on File MIME Types in Java

Operating System dependent
@Test
public void get_JAVA7_mimetype() {
    Path path = new File("Employee.xlsx").toPath();
    String mimeType = Files.probeContentType(path);
    
    assertEquals(mimeType, "application/vnd.ms-excel");
}

It will use FileTypeDetector implementations to probe the MIME type and invokes the probeContentType of each implementation to resolve the type. Hence, if the file is known to the implementations then the content type is returned. However, if that doesn’t happen, a system-default file type detector is invoked.


Resolve using first few characters of the input stream
@Test
public void getMIMEType_from_Extension(){
    File file = new File("Employee.xlsx");
    String mimeType = URLConnection.guessContentTypeFromName(file.getName());
  
    assertEquals(mimeType, "application/vnd.ms-excel");
}

Using built-in table of MIME types
@Test
public void getMIMEType_UsingGetFileNameMap(){
    File file = new File("Employee.xlsx");
    FileNameMap fileNameMap = URLConnection.getFileNameMap();
    String mimeType = fileNameMap.getContentTypeFor(file.getName());
  
    assertEquals(mimeType, "image/png");
}

It returns the matrix of MIME types used by all instances of URLConnection which then is used to resolve the input file type. However, this matrix of MIME types is very limited when it comes to URLConnection.

By default, the class uses content-types.properties file in JRE_HOME/lib. We can, however, extend it, by specifying a user-specific table using the content.types.user.table property:

System.setProperty("content.types.user.table","<path-to-file>");

JavaScript

Source: FileReader API & Medium's article on using Magic Numbers in JavaScript to get Mime Types

Interpret the Magic Number fetched using FileReader API

Final result looks something like this when one use javaScript to fetch the MimeType based on filestream. Open the embedded jsFiddle to see and understand this approach.

Bonus: It's accessible for most of the MIME Types and also you can add custom Mime Types in the getMimetype function. Also, it has FULL SUPPORT for MS Office Files Mime Types.

FileReader API Result

The steps to calculate mime type for a file in this example would be:

  1. The user selects a file.
  2. Take the first 4 bytes of the file using the slice method.
  3. Create a new FileReader instance
  4. Use the FileReader to read the 4 bytes you sliced out as an array buffer.
  5. Since the array buffer is just a generic way to represent a binary buffer we need to create a TypedArray, in this case an Uint8Array.
  6. With a TypedArray at our hands we can retrieve every byte and transform it to hexadecimal (by using toString(16)).
  7. We now have a way to get the magic numbers from a file by reading the first four bytes. The final step is to map it to a real mime type.

Browser Support (Above 95% overall and Close to 100% in all modern browsers): FileReader API

File Reader API Browser Support

const uploads = []

const fileSelector = document.getElementById('file-selector')
fileSelector.addEventListener('change', (event) => {
  console.time('FileOpen')
  const file = event.target.files[0]

  const filereader = new FileReader()

  filereader.onloadend = function(evt) {
    if (evt.target.readyState === FileReader.DONE) {
      const uint = new Uint8Array(evt.target.result)
      let bytes = []
      uint.forEach((byte) => {
        bytes.push(byte.toString(16))
      })
      const hex = bytes.join('').toUpperCase()

      uploads.push({
        filename: file.name,
        filetype: file.type ? file.type : 'Unknown/Extension missing',
        binaryFileType: getMimetype(hex),
        hex: hex
      })
      render()
    }

    console.timeEnd('FileOpen')
  }


  const blob = file.slice(0, 4);
  filereader.readAsArrayBuffer(blob);
})

const render = () => {
  const container = document.getElementById('files')

  const uploadedFiles = uploads.map((file) => {
    return `<div class=result><hr />
                    <span class=filename>Filename: <strong>${file.filename}</strong></span><br>
                    <span class=fileObject>File Object (Mime Type):<strong> ${file.filetype}</strong></span><br>
                    <span class=binaryObject>Binary (Mime Type):<strong> ${file.binaryFileType}</strong></span><br>
                    <span class=HexCode>Hex Code (Magic Number):<strong> <em>${file.hex}</strong></span></em>
                    </div>`
  })

  container.innerHTML = uploadedFiles.join('')
}

const getMimetype = (signature) => {
  switch (signature) {
    case '89504E47':
      return 'image/png'
    case '47494638':
      return 'image/gif'
    case '25504446':
      return 'application/pdf'
    case 'FFD8FFDB':
    case 'FFD8FFE0':
    case 'FFD8FFE1':
      return 'image/jpeg'
    case '504B0304':
      return 'application/zip'
    case '504B34':
      return 'application/vnd.ms-excel.sheet.macroEnabled.12'
    default:
      return 'Unknown filetype'
  }
}

.result {
  font-family: Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif;
  line-height: 20px;
  font-size: 14px;
  margin: 10px 0;
}

.filename {
  color: #333;
  font-size: 16px;
}

.fileObject {
  color: #a53;
}

.binaryObject {
  color: #63f;
}

.HexCode {
  color: #262;
}

em {
  padding: 2px 4px;
  background-color: #efefef;
  font-style: normal;
}

input[type=file] {
  background-color: #4CAF50;
  border: none;
  color: white;
  padding: 8px 16px;
  text-decoration: none;
  margin: 4px 2px;
  cursor: pointer;
}

<body>

  <input type="file" id="file-selector">

  <div id="files"></div>

Solution 6 - Excel

In case anyone wants the answer of Dirk Vollmar in a C# switch statement:

case "doc": return "application/msword";
case "dot": return "application/msword";
case "docx": return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
case "dotx": return "application/vnd.openxmlformats-officedocument.wordprocessingml.template";
case "docm": return "application/vnd.ms-word.document.macroEnabled.12";
case "dotm": return "application/vnd.ms-word.template.macroEnabled.12";
case "xls": return "application/vnd.ms-excel";
case "xlt": return "application/vnd.ms-excel";
case "xla": return "application/vnd.ms-excel";
case "xlsx": return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
case "xltx": return "application/vnd.openxmlformats-officedocument.spreadsheetml.template";
case "xlsm": return "application/vnd.ms-excel.sheet.macroEnabled.12";
case "xltm": return "application/vnd.ms-excel.template.macroEnabled.12";
case "xlam": return "application/vnd.ms-excel.addin.macroEnabled.12";
case "xlsb": return "application/vnd.ms-excel.sheet.binary.macroEnabled.12";
case "ppt": return "application/vnd.ms-powerpoint";
case "pot": return "application/vnd.ms-powerpoint";
case "pps": return "application/vnd.ms-powerpoint";
case "ppa": return "application/vnd.ms-powerpoint";
case "pptx": return "application/vnd.openxmlformats-officedocument.presentationml.presentation";
case "potx": return "application/vnd.openxmlformats-officedocument.presentationml.template";
case "ppsx": return "application/vnd.openxmlformats-officedocument.presentationml.slideshow";
case "ppam": return "application/vnd.ms-powerpoint.addin.macroEnabled.12";
case "pptm": return "application/vnd.ms-powerpoint.presentation.macroEnabled.12";
case "potm": return "application/vnd.ms-powerpoint.template.macroEnabled.12";
case "ppsm": return "application/vnd.ms-powerpoint.slideshow.macroEnabled.12";
case "mdb": return "application/vnd.ms-access";

Solution 7 - Excel

To load a .docx file:

    if let htmlFile = Bundle.main.path(forResource: "fileName", ofType: "docx") {
        let url = URL(fileURLWithPath: htmlFile)
        do{
            let data = try Data(contentsOf: url)
            self.webView.load(data, mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", textEncodingName: "UTF-8", baseURL: url)
        }catch{
            print("errrr")
        }
    }

Solution 8 - Excel

Swift4

 func mimeTypeForPath(path: String) -> String {
        let url = NSURL(fileURLWithPath: path)
        let pathExtension = url.pathExtension

        if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension! as NSString, nil)?.takeRetainedValue() {
            if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
                return mimetype as String
            }
        }
        return "application/octet-stream"
    }

Solution 9 - Excel

WPS spreadsheet :

application/wps-office.xlsx

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRichard KnopView Question on Stackoverflow
Solution 1 - ExcelDirk VollmarView Answer on Stackoverflow
Solution 2 - ExcelPeteView Answer on Stackoverflow
Solution 3 - ExcelHzzkygcsView Answer on Stackoverflow
Solution 4 - ExcelFaakhirView Answer on Stackoverflow
Solution 5 - ExceljainashishView Answer on Stackoverflow
Solution 6 - ExcelNico TimmermanView Answer on Stackoverflow
Solution 7 - ExcelDhaval H. NenaView Answer on Stackoverflow
Solution 8 - ExcelAmr AngryView Answer on Stackoverflow
Solution 9 - ExcelFendiView Answer on Stackoverflow