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?
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?
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.
Application/vnd.ms-word
as a content-type being returned by Microsoft IIS servers for older .doc
files. Even if that isn't proper, you should try to handle it if you're relying on the content-type when downloading. –
Moorman application/vnd.ms-excel
MIME type and return a file with an .xls
extension in Firefox, when you click on "Open with" in the dialog, Firefox will automatically append an .xls
extension to the end of the file, which will then make MS Excel display a warning about the file possibly not being secure (which will probably confuse your users). –
Demetri application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
–
Heighten application/vnd.ms-excel
MIME type and return a file with an .xlsx
extension, Firefox will automatically append the .xls
extension, which causes the warning popup. –
Demetri application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
. If it's incorrectly mapped - where the .xls file extension's MIME type: application/vnd.ms-excel
is used for .xlsx files - then both browsers will both throw errors & prevent the files from opening in new tabs. Safari uses a "View" link to open the Excel file in a new tab. Chrome simply opens Excel files in new tabs. –
Inspect application/oleobject
for an .ods
spreadsheet file attached to an email. –
Clabo Here is an (almost) complete file extensions's MIME in a JSON format.
You can do these examples: 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": "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": "image/x-citrix-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": "video/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": "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"
}
According to @Octo Poulos suggestions:
video/mp4
application/mp4
is not completely wrong. It depends on the use case of the file. However, thanks to your suggestion, I have updated it to the more frequent use case, video/mp4
. See https://mcmap.net/q/46459/-correct-mime-type-for-mp4 for more information about its use cases. –
Leg 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.
UPDATE: In .Net Core, the same can be achieved using FileExtensionContentTypeProvider.TryGetContentType()
MimeMapping.GetMimeMapping
only applies to .NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 - so if we are in Core, we might look for another way. –
Popham 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.
>>> pip install python-magic
>>> import magic
>>> magic.from_file("Employee.pdf", mime=True)
'application/pdf'
>>> 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'
Source: Baeldung's blog on File MIME Types in Java
@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.
@Test
public void getMIMEType_from_Extension(){
File file = new File("Employee.xlsx");
String mimeType = URLConnection.guessContentTypeFromName(file.getName());
assertEquals(mimeType, "application/vnd.ms-excel");
}
@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>");
Source: FileReader API & Medium's article on using Magic Numbers in JavaScript to get Mime Types
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.
The steps to calculate mime type for a file in this example would be:
Browser Support (Above 95% overall and Close to 100% in all modern browsers):
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>
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"));
}
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";
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"
}
WPS spreadsheet :
application/wps-office.xlsx
application/wps-office.xlsx
by application/wps-office.xltx
and it works fine, especially on Firefox . It saves me. I recommand the answer. What I can deduce is that we can substitute .xlsx
with any office extension, and it stills work fine –
Wrathful 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")
}
}
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
but if you (or your client) has WPS, maybe you need add
application/wps-office.xlsx
© 2022 - 2024 — McMap. All rights reserved.
file -bi YOUR_FILE
– FoggJPEG image data, EXIF standard
– Interflow-i
flag is--mime
. – Mcandrewimage/jpeg; charset=binary
, whereimage/jpeg
is the mime type. – Illusionism/usr/bin/file
is identifyingppt
incorrectly asapplication/vnd.ms-office
. (Linux and Mac) I haven't found why this is and we need to override for this case. – Darnall