package rest import ( "path/filepath" "strings" ) var allMimeMap = map[string]string{ ".323": "text/h323", ".3g2": "video/3gpp2", ".3gp": "video/3gpp", ".3gp2": "video/3gpp2", ".3gpp": "video/3gpp", ".7z": "application/x-7z-compressed", ".aa": "audio/audible", ".AAC": "audio/aac", ".aaf": "application/octet-stream", ".aax": "audio/vnd.audible.aax", ".ac3": "audio/ac3", ".aca": "application/octet-stream", ".accda": "application/msaccess.addin", ".accdb": "application/msaccess", ".accdc": "application/msaccess.cab", ".accde": "application/msaccess", ".accdr": "application/msaccess.runtime", ".accdt": "application/msaccess", ".accdw": "application/msaccess.webapplication", ".accft": "application/msaccess.ftemplate", ".acx": "application/internet-property-stream", ".AddIn": "text/xml", ".ade": "application/msaccess", ".adobebridge": "application/x-bridge-url", ".adp": "application/msaccess", ".ADT": "audio/vnd.dlna.adts", ".ADTS": "audio/aac", ".afm": "application/octet-stream", ".ai": "application/postscript", ".aif": "audio/aiff", ".aifc": "audio/aiff", ".aiff": "audio/aiff", ".air": "application/vnd.adobe.air-application-installer-package+zip", ".amc": "application/mpeg", ".anx": "application/annodex", ".apk": "application/vnd.android.package-archive", ".application": "application/x-ms-application", ".art": "image/x-jg", ".asa": "application/xml", ".asax": "application/xml", ".ascx": "application/xml", ".asd": "application/octet-stream", ".asf": "video/x-ms-asf", ".ashx": "application/xml", ".asi": "application/octet-stream", ".asm": "text/plain", ".asmx": "application/xml", ".aspx": "application/xml", ".asr": "video/x-ms-asf", ".asx": "video/x-ms-asf", ".atom": "application/atom+xml", ".au": "audio/basic", ".avi": "video/x-msvideo", ".axa": "audio/annodex", ".axs": "application/olescript", ".axv": "video/annodex", ".bas": "text/plain", ".bat": "text/plain", ".bcpio": "application/x-bcpio", ".bin": "application/octet-stream", ".bmp": "image/bmp", ".c": "text/plain", ".cab": "application/octet-stream", ".caf": "audio/x-caf", ".calx": "application/vnd.ms-office.calx", ".cat": "application/vnd.ms-pki.seccat", ".cc": "text/plain", ".cd": "text/plain", ".cdda": "audio/aiff", ".cdf": "application/x-cdf", ".cer": "application/x-x509-ca-cert", ".cfg": "text/plain", ".chm": "application/octet-stream", ".class": "application/x-java-applet", ".clp": "application/x-msclip", ".cmd": "text/plain", ".cmx": "image/x-cmx", ".cnf": "text/plain", ".cod": "image/cis-cod", ".config": "application/xml", ".contact": "text/x-ms-contact", ".coverage": "application/xml", ".cpio": "application/x-cpio", ".cpp": "text/plain", ".crd": "application/x-mscardfile", ".crl": "application/pkix-crl", ".crt": "application/x-x509-ca-cert", ".cs": "text/plain", ".csdproj": "text/plain", ".csh": "application/x-csh", ".csproj": "text/plain", ".css": "text/css", ".csv": "application/csv", ".cur": "application/octet-stream", ".cxx": "text/plain", ".dat": "application/octet-stream", ".datasource": "application/xml", ".dbproj": "text/plain", ".dcr": "application/x-director", ".def": "text/plain", ".deploy": "application/octet-stream", ".der": "application/x-x509-ca-cert", ".dgml": "application/xml", ".dib": "image/bmp", ".dif": "video/x-dv", ".dir": "application/x-director", ".disco": "text/xml", ".divx": "video/divx", ".dll": "application/x-msdownload", ".dll.config": "text/xml", ".dlm": "text/dlm", ".doc": "application/msword", ".docm": "application/vnd.ms-word.document.macroEnabled.12", ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", ".dot": "application/msword", ".dotm": "application/vnd.ms-word.template.macroEnabled.12", ".dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template", ".dsp": "application/octet-stream", ".dsw": "text/plain", ".dtd": "text/xml", ".dtsConfig": "text/xml", ".dv": "video/x-dv", ".dvi": "application/x-dvi", ".dwf": "drawing/x-dwf", ".dwg": "application/acad", ".dwp": "application/octet-stream", ".dxf": "application/x-dxf", ".dxr": "application/x-director", ".eml": "message/rfc822", ".emz": "application/octet-stream", ".eot": "application/vnd.ms-fontobject", ".eps": "application/postscript", ".etl": "application/etl", ".etx": "text/x-setext", ".evy": "application/envoy", ".exe": "application/octet-stream", ".exe.config": "text/xml", ".fdf": "application/vnd.fdf", ".fif": "application/fractals", ".filters": "application/xml", ".fla": "application/octet-stream", ".flac": "audio/flac", ".flr": "x-world/x-vrml", ".flv": "video/x-flv", ".fsscript": "application/fsharp-script", ".fsx": "application/fsharp-script", ".generictest": "application/xml", ".gif": "image/gif", ".go": "text/plain", ".gpx": "application/gpx+xml", ".group": "text/x-ms-group", ".gsm": "audio/x-gsm", ".gradle": "text/plain", ".gtar": "application/x-gtar", ".gz": "application/x-gzip", ".h": "text/plain", ".hdf": "application/x-hdf", ".hdml": "text/x-hdml", ".hhc": "application/x-oleobject", ".hhk": "application/octet-stream", ".hhp": "application/octet-stream", ".hlp": "application/winhlp", ".hpp": "text/plain", ".hqx": "application/mac-binhex40", ".hta": "application/hta", ".htc": "text/x-component", ".htm": "text/html", ".html": "text/html", ".htt": "text/webviewhtml", ".hxa": "application/xml", ".hxc": "application/xml", ".hxd": "application/octet-stream", ".hxe": "application/xml", ".hxf": "application/xml", ".hxh": "application/octet-stream", ".hxi": "application/octet-stream", ".hxk": "application/xml", ".hxq": "application/octet-stream", ".hxr": "application/octet-stream", ".hxs": "application/octet-stream", ".hxt": "text/html", ".hxv": "application/xml", ".hxw": "application/octet-stream", ".hxx": "text/plain", ".i": "text/plain", ".ico": "image/x-icon", ".ics": "application/octet-stream", ".idl": "text/plain", ".ief": "image/ief", ".iii": "application/x-iphone", ".inc": "text/plain", ".inf": "application/octet-stream", ".ini": "text/plain", ".inl": "text/plain", ".ins": "application/x-internet-signup", ".ipa": "application/x-itunes-ipa", ".ipg": "application/x-itunes-ipg", ".ipproj": "text/plain", ".ipsw": "application/x-itunes-ipsw", ".iqy": "text/x-ms-iqy", ".isp": "application/x-internet-signup", ".ite": "application/x-itunes-ite", ".itlp": "application/x-itunes-itlp", ".itms": "application/x-itunes-itms", ".itpc": "application/x-itunes-itpc", ".IVF": "video/x-ivf", ".jar": "application/java-archive", ".java": "text/plain", ".jck": "application/liquidmotion", ".jcz": "application/liquidmotion", ".jfif": "image/pjpeg", ".jnlp": "application/x-java-jnlp-file", ".jpb": "application/octet-stream", ".jpe": "image/jpeg", ".jpeg": "image/jpeg", ".jpg": "image/jpeg", ".js": "application/javascript", ".json": "application/json", ".jsx": "text/jscript", ".jsxbin": "text/plain", ".latex": "application/x-latex", ".library-ms": "application/windows-library+xml", ".lit": "application/x-ms-reader", ".loadtest": "application/xml", ".lpk": "application/octet-stream", ".lsf": "video/x-la-asf", ".lst": "text/plain", ".lsx": "video/x-la-asf", ".lzh": "application/octet-stream", ".m13": "application/x-msmediaview", ".m14": "application/x-msmediaview", ".m1v": "video/mpeg", ".m2t": "video/vnd.dlna.mpeg-tts", ".m2ts": "video/vnd.dlna.mpeg-tts", ".m2v": "video/mpeg", ".m3u": "audio/x-mpegurl", ".m3u8": "audio/x-mpegurl", ".m4a": "audio/m4a", ".m4b": "audio/m4b", ".m4p": "audio/m4p", ".m4r": "audio/x-m4r", ".m4v": "video/x-m4v", ".mac": "image/x-macpaint", ".mak": "text/plain", ".man": "application/x-troff-man", ".manifest": "application/x-ms-manifest", ".map": "text/plain", ".master": "application/xml", ".mbox": "application/mbox", ".mda": "application/msaccess", ".mdb": "application/x-msaccess", ".mde": "application/msaccess", ".mdp": "application/octet-stream", ".me": "application/x-troff-me", ".mfp": "application/x-shockwave-flash", ".mht": "message/rfc822", ".mhtml": "message/rfc822", ".mid": "audio/mid", ".midi": "audio/mid", ".mix": "application/octet-stream", ".mk": "text/plain", ".mmf": "application/x-smaf", ".mno": "text/xml", ".mny": "application/x-msmoney", ".mod": "video/mpeg", ".mov": "video/quicktime", ".movie": "video/x-sgi-movie", ".mp2": "video/mpeg", ".mp2v": "video/mpeg", ".mp3": "audio/mpeg", ".mp4": "video/mp4", ".mp4v": "video/mp4", ".mpa": "video/mpeg", ".mpe": "video/mpeg", ".mpeg": "video/mpeg", ".mpf": "application/vnd.ms-mediapackage", ".mpg": "video/mpeg", ".mpp": "application/vnd.ms-project", ".mpv2": "video/mpeg", ".mqv": "video/quicktime", ".ms": "application/x-troff-ms", ".msg": "application/vnd.ms-outlook", ".msi": "application/octet-stream", ".mso": "application/octet-stream", ".mts": "video/vnd.dlna.mpeg-tts", ".mtx": "application/xml", ".mvb": "application/x-msmediaview", ".mvc": "application/x-miva-compiled", ".mxp": "application/x-mmxp", ".nc": "application/x-netcdf", ".nsc": "video/x-ms-asf", ".nws": "message/rfc822", ".ocx": "application/octet-stream", ".oda": "application/oda", ".odb": "application/vnd.oasis.opendocument.database", ".odc": "application/vnd.oasis.opendocument.chart", ".odf": "application/vnd.oasis.opendocument.formula", ".odg": "application/vnd.oasis.opendocument.graphics", ".odh": "text/plain", ".odi": "application/vnd.oasis.opendocument.image", ".odl": "text/plain", ".odm": "application/vnd.oasis.opendocument.text-master", ".odp": "application/vnd.oasis.opendocument.presentation", ".ods": "application/vnd.oasis.opendocument.spreadsheet", ".odt": "application/vnd.oasis.opendocument.text", ".oga": "audio/ogg", ".ogg": "audio/ogg", ".ogv": "video/ogg", ".ogx": "application/ogg", ".one": "application/onenote", ".onea": "application/onenote", ".onepkg": "application/onenote", ".onetmp": "application/onenote", ".onetoc": "application/onenote", ".onetoc2": "application/onenote", ".opus": "audio/ogg", ".orderedtest": "application/xml", ".osdx": "application/opensearchdescription+xml", ".otf": "application/font-sfnt", ".otg": "application/vnd.oasis.opendocument.graphics-template", ".oth": "application/vnd.oasis.opendocument.text-web", ".otp": "application/vnd.oasis.opendocument.presentation-template", ".ots": "application/vnd.oasis.opendocument.spreadsheet-template", ".ott": "application/vnd.oasis.opendocument.text-template", ".oxt": "application/vnd.openofficeorg.extension", ".p10": "application/pkcs10", ".p12": "application/x-pkcs12", ".p7b": "application/x-pkcs7-certificates", ".p7c": "application/pkcs7-mime", ".p7m": "application/pkcs7-mime", ".p7r": "application/x-pkcs7-certreqresp", ".p7s": "application/pkcs7-signature", ".pbm": "image/x-portable-bitmap", ".pcast": "application/x-podcast", ".pct": "image/pict", ".pcx": "application/octet-stream", ".pcz": "application/octet-stream", ".pdf": "application/pdf", ".pfb": "application/octet-stream", ".pfm": "application/octet-stream", ".pfx": "application/x-pkcs12", ".pgm": "image/x-portable-graymap", ".pic": "image/pict", ".pict": "image/pict", ".pkgdef": "text/plain", ".pkgundef": "text/plain", ".pko": "application/vnd.ms-pki.pko", ".pls": "audio/scpls", ".pma": "application/x-perfmon", ".pmc": "application/x-perfmon", ".pml": "application/x-perfmon", ".pmr": "application/x-perfmon", ".pmw": "application/x-perfmon", ".png": "image/png", ".pnm": "image/x-portable-anymap", ".pnt": "image/x-macpaint", ".pntg": "image/x-macpaint", ".pnz": "image/png", ".pot": "application/vnd.ms-powerpoint", ".potm": "application/vnd.ms-powerpoint.template.macroEnabled.12", ".potx": "application/vnd.openxmlformats-officedocument.presentationml.template", ".ppa": "application/vnd.ms-powerpoint", ".ppam": "application/vnd.ms-powerpoint.addin.macroEnabled.12", ".ppm": "image/x-portable-pixmap", ".pps": "application/vnd.ms-powerpoint", ".ppsm": "application/vnd.ms-powerpoint.slideshow.macroEnabled.12", ".ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow", ".ppt": "application/vnd.ms-powerpoint", ".pptm": "application/vnd.ms-powerpoint.presentation.macroEnabled.12", ".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", ".prf": "application/pics-rules", ".prm": "application/octet-stream", ".prx": "application/octet-stream", ".ps": "application/postscript", ".py": "text/plain", ".psc1": "application/PowerShell", ".psd": "application/octet-stream", ".psess": "application/xml", ".psm": "application/octet-stream", ".psp": "application/octet-stream", ".pst": "application/vnd.ms-outlook", ".pub": "application/x-mspublisher", ".pwz": "application/vnd.ms-powerpoint", ".qht": "text/x-html-insertion", ".qhtm": "text/x-html-insertion", ".qt": "video/quicktime", ".qti": "image/x-quicktime", ".qtif": "image/x-quicktime", ".qtl": "application/x-quicktimeplayer", ".qxd": "application/octet-stream", ".ra": "audio/x-pn-realaudio", ".ram": "audio/x-pn-realaudio", ".rar": "application/x-rar-compressed", ".ras": "image/x-cmu-raster", ".rat": "application/rat-file", ".rc": "text/plain", ".rc2": "text/plain", ".rct": "text/plain", ".rdlc": "application/xml", ".reg": "text/plain", ".resx": "application/xml", ".rf": "image/vnd.rn-realflash", ".rgb": "image/x-rgb", ".rgs": "text/plain", ".rm": "application/vnd.rn-realmedia", ".rmi": "audio/mid", ".rmp": "application/vnd.rn-rn_music_package", ".roff": "application/x-troff", ".rpm": "audio/x-pn-realaudio-plugin", ".rqy": "text/x-ms-rqy", ".rtf": "application/rtf", ".rtx": "text/richtext", ".rvt": "application/octet-stream", ".ruleset": "application/xml", ".s": "text/plain", ".safariextz": "application/x-safari-safariextz", ".scd": "application/x-msschedule", ".scr": "text/plain", ".sct": "text/scriptlet", ".sd2": "audio/x-sd2", ".sdp": "application/sdp", ".sea": "application/octet-stream", ".searchConnector-ms": "application/windows-search-connector+xml", ".setpay": "application/set-payment-initiation", ".setreg": "application/set-registration-initiation", ".settings": "application/xml", ".sgimb": "application/x-sgimb", ".sgml": "text/sgml", ".sh": "text/plain", ".shar": "application/x-shar", ".shtml": "text/html", ".sit": "application/x-stuffit", ".sitemap": "application/xml", ".skin": "application/xml", ".skp": "application/x-koan", ".sldm": "application/vnd.ms-powerpoint.slide.macroEnabled.12", ".sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide", ".slk": "application/vnd.ms-excel", ".sln": "text/plain", ".slupkg-ms": "application/x-ms-license", ".smd": "audio/x-smd", ".smi": "application/octet-stream", ".smx": "audio/x-smd", ".smz": "audio/x-smd", ".snd": "audio/basic", ".snippet": "application/xml", ".snp": "application/octet-stream", ".sol": "text/plain", ".sor": "text/plain", ".spc": "application/x-pkcs7-certificates", ".spl": "application/futuresplash", ".spx": "audio/ogg", ".sql": "text/plain", ".src": "application/x-wais-source", ".srf": "text/plain", ".SSISDeploymentManifest": "text/xml", ".ssm": "application/streamingmedia", ".sst": "application/vnd.ms-pki.certstore", ".stl": "application/vnd.ms-pki.stl", ".sv4cpio": "application/x-sv4cpio", ".sv4crc": "application/x-sv4crc", ".svc": "application/xml", ".svg": "image/svg+xml", ".swf": "application/x-shockwave-flash", ".step": "application/step", ".stp": "application/step", ".t": "application/x-troff", ".tar": "application/x-tar", ".tcl": "application/x-tcl", ".testrunconfig": "application/xml", ".testsettings": "application/xml", ".tex": "application/x-tex", ".texi": "application/x-texinfo", ".texinfo": "application/x-texinfo", ".tgz": "application/x-compressed", ".thmx": "application/vnd.ms-officetheme", ".thn": "application/octet-stream", ".tif": "image/tiff", ".tiff": "image/tiff", ".tlh": "text/plain", ".tli": "text/plain", ".toc": "application/octet-stream", ".tr": "application/x-troff", ".trm": "application/x-msterminal", ".trx": "application/xml", ".ts": "video/vnd.dlna.mpeg-tts", ".tsv": "text/tab-separated-values", ".ttf": "application/font-sfnt", ".tts": "video/vnd.dlna.mpeg-tts", ".txt": "text/plain", ".u32": "application/octet-stream", ".uls": "text/iuls", ".user": "text/plain", ".ustar": "application/x-ustar", ".vb": "text/plain", ".vbdproj": "text/plain", ".vbk": "video/mpeg", ".vbproj": "text/plain", ".vbs": "text/vbscript", ".vcf": "text/x-vcard", ".vcproj": "application/xml", ".vcs": "text/plain", ".vcxproj": "application/xml", ".vddproj": "text/plain", ".vdp": "text/plain", ".vdproj": "text/plain", ".vdx": "application/vnd.ms-visio.viewer", ".vml": "text/xml", ".vscontent": "application/xml", ".vsct": "text/xml", ".vsd": "application/vnd.visio", ".vsi": "application/ms-vsi", ".vsix": "application/vsix", ".vsixlangpack": "text/xml", ".vsixmanifest": "text/xml", ".vsmdi": "application/xml", ".vspscc": "text/plain", ".vss": "application/vnd.visio", ".vsscc": "text/plain", ".vssettings": "text/xml", ".vssscc": "text/plain", ".vst": "application/vnd.visio", ".vstemplate": "text/xml", ".vsto": "application/x-ms-vsto", ".vsw": "application/vnd.visio", ".vsx": "application/vnd.visio", ".vtx": "application/vnd.visio", ".wav": "audio/wav", ".wave": "audio/wav", ".wax": "audio/x-ms-wax", ".wbk": "application/msword", ".wbmp": "image/vnd.wap.wbmp", ".wcm": "application/vnd.ms-works", ".wdb": "application/vnd.ms-works", ".wdp": "image/vnd.ms-photo", ".webarchive": "application/x-safari-webarchive", ".webm": "video/webm", ".webp": "image/webp", /* https"://en.wikipedia.org/wiki/WebP */ ".webtest": "application/xml", ".wiq": "application/xml", ".wiz": "application/msword", ".wks": "application/vnd.ms-works", ".WLMP": "application/wlmoviemaker", ".wlpginstall": "application/x-wlpg-detect", ".wlpginstall3": "application/x-wlpg3-detect", ".wm": "video/x-ms-wm", ".wma": "audio/x-ms-wma", ".wmd": "application/x-ms-wmd", ".wmf": "application/x-msmetafile", ".wml": "text/vnd.wap.wml", ".wmlc": "application/vnd.wap.wmlc", ".wmls": "text/vnd.wap.wmlscript", ".wmlsc": "application/vnd.wap.wmlscriptc", ".wmp": "video/x-ms-wmp", ".wmv": "video/x-ms-wmv", ".wmx": "video/x-ms-wmx", ".wmz": "application/x-ms-wmz", ".woff": "application/font-woff", ".wpl": "application/vnd.ms-wpl", ".wps": "application/vnd.ms-works", ".wri": "application/x-mswrite", ".wrl": "x-world/x-vrml", ".wrz": "x-world/x-vrml", ".wsc": "text/scriptlet", ".wsdl": "text/xml", ".wvx": "video/x-ms-wvx", ".x": "application/directx", ".xaf": "x-world/x-vrml", ".xaml": "application/xaml+xml", ".xap": "application/x-silverlight-app", ".xbap": "application/x-ms-xbap", ".xbm": "image/x-xbitmap", ".xdr": "text/plain", ".xht": "application/xhtml+xml", ".xhtml": "application/xhtml+xml", ".xla": "application/vnd.ms-excel", ".xlam": "application/vnd.ms-excel.addin.macroEnabled.12", ".xlc": "application/vnd.ms-excel", ".xld": "application/vnd.ms-excel", ".xlk": "application/vnd.ms-excel", ".xll": "application/vnd.ms-excel", ".xlm": "application/vnd.ms-excel", ".xls": "application/vnd.ms-excel", ".xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12", ".xlsm": "application/vnd.ms-excel.sheet.macroEnabled.12", ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", ".xlt": "application/vnd.ms-excel", ".xltm": "application/vnd.ms-excel.template.macroEnabled.12", ".xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template", ".xlw": "application/vnd.ms-excel", ".xml": "text/xml", ".xmp": "application/octet-stream", ".xmta": "application/xml", ".xof": "x-world/x-vrml", ".XOML": "text/plain", ".xpm": "image/x-xpixmap", ".xps": "application/vnd.ms-xpsdocument", ".xrm-ms": "text/xml", ".xsc": "application/xml", ".xsd": "text/xml", ".xsf": "text/xml", ".xsl": "text/xml", ".xslt": "text/xml", ".xsn": "application/octet-stream", ".xss": "application/xml", ".xspf": "application/xspf+xml", ".xtp": "application/octet-stream", ".xwd": "image/x-xwindowdump", ".z": "application/x-compress", ".zip": "application/zip"} //根据文件名字获取后缀名,均是小写。 func GetExtension(filename string) string { var extension = filepath.Ext(filename) return strings.ToLower(extension) } //根据一个后缀名获取MimeType,获取不到默认返回 "application/octet-stream" func GetMimeType(filename string) string { extension := GetExtension(filename) if mimeType, ok := allMimeMap[extension]; ok { return mimeType } else { return "application/octet-stream" } } //根据一个后缀名获取MimeType,获取不到默认返回fallback. func GetFallbackMimeType(filename string, fallback string) string { extension := GetExtension(filename) if mimeType, ok := allMimeMap[extension]; ok { return mimeType } else { return fallback } }