关于excel:docx,pptx等的正确mime类型是什么?

What is a correct mime type for docx, pptx etc?

对于较旧的* .doc文档,这已足够:

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

我应该将哪些mime类型用于新的docx文档? 还适用于pptx和xlsx文件?


以下是HTTP Content Streaming的正确Microsoft Office MIME类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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

有关详细信息,请查看此TechNet文章和此博客文章。


或者,如果您在.Net v4.5或更高版本中工作,请尝试使用System.Web.MimeMapping.GetMimeMapping(yourFileName)来获取MIME类型 - 比硬编码字符串要好得多


这是一个(几乎)完整的所有文件扩展名的MIME,采用JSON格式。
举个例子:MIME ["ppt"],MIME ["docx"]等

1
{"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","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"}


本文将探讨各种编程语言中获取MIME类型的各种方法,其中CONS在单行描述中作为标题。所以,相应地使用它们和适合你的那个。

例如。当用户提供.xls,.xlsx或.xlsm中的任何一个并且您不想编写代码测试扩展并为每个扩展提供MIME类型时,下面的代码特别有用。让系统完成这项工作。

Python 3

使用python-magic

1
2
3
4
>>> pip install python-magic
>>> import magic
>>> magic.from_file("Employee.pdf", mime=True)
'application/pdf'

使用内置的mimeypes模块 - 将文件名映射到MimeTypes模块

1
2
3
4
5
6
7
8
9
10
>>> 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

来源:Baeldung关于Java中文件MIME类型的博客

取决于操作系统

1
2
3
4
5
6
7
@Test
public void get_JAVA7_mimetype() {
    Path path = new File("Employee.xlsx").toPath();
    String mimeType = Files.probeContentType(path);

    assertEquals(mimeType,"application/vnd.ms-excel");
}

它将使用FileTypeDetector实现来探测MIME类型,并调用每个实现的probeContentType来解析该类型。因此,如果文件对于实现是已知的,则返回内容类型。但是,如果不发生这种情况,则会调用系统默认文件类型检测器。

使用输入流的前几个字符解析

1
2
3
4
5
6
7
@Test
public void getMIMEType_from_Extension(){
    File file = new File("Employee.xlsx");
    String mimeType = URLConnection.guessContentTypeFromName(file.getName());

    assertEquals(mimeType,"application/vnd.ms-excel");
}

使用MIME类型的内置表

1
2
3
4
5
6
7
8
@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");
}

它返回URLConnection的所有实例使用的MIME类型矩阵,然后用于解析输入文件类型。但是,当涉及到URLConnection时,这种MIME类型矩阵非常有限。

默认情况下,该类使用JRE_HOME / lib中的content-types.properties文件。但是,我们可以通过使用content.types.user.table属性指定特定于用户的表来扩展它:

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

JavaScript的

来源:FileReader API&Medium关于在JavaScript中使用Magic Numbers获取Mime类型的文章

解释使用FileReader API获取的Magic Number

当使用javaScript基于文件流获取MimeType时,最终结果看起来像这样。打开嵌入式jsFiddle以查看和理解这种方法。

奖励:它可以访问大多数MIME类型,也可以在getMimetype函数中添加自定义Mime类型。此外,它完全支持MS Office文件Mime类型。

FileReader API Result

在此示例中,为文件计算mime类型的步骤如下:

  • 用户选择文件。
  • 使用。获取文件的前4个字节
    切片法。
  • 创建一个新的FileReader实例
  • 使用FileReader将您切出的4个字节读取为数组缓冲区。
  • 由于数组缓冲区只是表示我们需要的二进制缓冲区的通用方法
    创建一个TypedArray,在本例中是一个Uint8Array。
  • 使用TypedArray,我们可以检索每个字节并将其转换为
    十六进制(通过使用toString(16))。
  • 我们现在有办法通过读取前四个字节来从文件中获取幻数。最后一步是将其映射到真实的mime类型。
  • 浏览器支持(总体上超过95%,在所有现代浏览器中接近100%):
    FileReader API

    File Reader API Browser Support

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    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 `<hr />
                        <span class=filename>Filename: ${file.filename}</span>
                        <span class=fileObject>File Object (Mime Type): ${file.filetype}</span>
                        <span class=binaryObject>Binary (Mime Type): ${file.binaryFileType}</span>
                        <span class=HexCode>Hex Code (Magic Number): ${file.hex}</span>
                        `
      })

      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'
      }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    .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;
    }
    1
    2
    3
    <body>

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


    Swift4

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     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"
        }


    加载.docx文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
        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")
            }
        }


    如果有人想在C#switch语句中得到Dirk Vollmar的答案:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    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";