You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
8.9 KiB
245 lines
8.9 KiB
package oss |
|
|
|
import ( |
|
"mime" |
|
"path" |
|
"strings" |
|
) |
|
|
|
var extToMimeType = map[string]string{ |
|
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", |
|
".xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template", |
|
".potx": "application/vnd.openxmlformats-officedocument.presentationml.template", |
|
".ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow", |
|
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", |
|
".sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide", |
|
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", |
|
".dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template", |
|
".xlam": "application/vnd.ms-excel.addin.macroEnabled.12", |
|
".xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12", |
|
".apk": "application/vnd.android.package-archive", |
|
".hqx": "application/mac-binhex40", |
|
".cpt": "application/mac-compactpro", |
|
".doc": "application/msword", |
|
".ogg": "application/ogg", |
|
".pdf": "application/pdf", |
|
".rtf": "text/rtf", |
|
".mif": "application/vnd.mif", |
|
".xls": "application/vnd.ms-excel", |
|
".ppt": "application/vnd.ms-powerpoint", |
|
".odc": "application/vnd.oasis.opendocument.chart", |
|
".odb": "application/vnd.oasis.opendocument.database", |
|
".odf": "application/vnd.oasis.opendocument.formula", |
|
".odg": "application/vnd.oasis.opendocument.graphics", |
|
".otg": "application/vnd.oasis.opendocument.graphics-template", |
|
".odi": "application/vnd.oasis.opendocument.image", |
|
".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", |
|
".oth": "application/vnd.oasis.opendocument.text-web", |
|
".sxw": "application/vnd.sun.xml.writer", |
|
".stw": "application/vnd.sun.xml.writer.template", |
|
".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", |
|
".sxg": "application/vnd.sun.xml.writer.global", |
|
".sxm": "application/vnd.sun.xml.math", |
|
".sis": "application/vnd.symbian.install", |
|
".wbxml": "application/vnd.wap.wbxml", |
|
".wmlc": "application/vnd.wap.wmlc", |
|
".wmlsc": "application/vnd.wap.wmlscriptc", |
|
".bcpio": "application/x-bcpio", |
|
".torrent": "application/x-bittorrent", |
|
".bz2": "application/x-bzip2", |
|
".vcd": "application/x-cdlink", |
|
".pgn": "application/x-chess-pgn", |
|
".cpio": "application/x-cpio", |
|
".csh": "application/x-csh", |
|
".dvi": "application/x-dvi", |
|
".spl": "application/x-futuresplash", |
|
".gtar": "application/x-gtar", |
|
".hdf": "application/x-hdf", |
|
".jar": "application/x-java-archive", |
|
".jnlp": "application/x-java-jnlp-file", |
|
".js": "application/x-javascript", |
|
".ksp": "application/x-kspread", |
|
".chrt": "application/x-kchart", |
|
".kil": "application/x-killustrator", |
|
".latex": "application/x-latex", |
|
".rpm": "application/x-rpm", |
|
".sh": "application/x-sh", |
|
".shar": "application/x-shar", |
|
".swf": "application/x-shockwave-flash", |
|
".sit": "application/x-stuffit", |
|
".sv4cpio": "application/x-sv4cpio", |
|
".sv4crc": "application/x-sv4crc", |
|
".tar": "application/x-tar", |
|
".tcl": "application/x-tcl", |
|
".tex": "application/x-tex", |
|
".man": "application/x-troff-man", |
|
".me": "application/x-troff-me", |
|
".ms": "application/x-troff-ms", |
|
".ustar": "application/x-ustar", |
|
".src": "application/x-wais-source", |
|
".zip": "application/zip", |
|
".m3u": "audio/x-mpegurl", |
|
".ra": "audio/x-pn-realaudio", |
|
".wav": "audio/x-wav", |
|
".wma": "audio/x-ms-wma", |
|
".wax": "audio/x-ms-wax", |
|
".pdb": "chemical/x-pdb", |
|
".xyz": "chemical/x-xyz", |
|
".bmp": "image/bmp", |
|
".gif": "image/gif", |
|
".ief": "image/ief", |
|
".png": "image/png", |
|
".wbmp": "image/vnd.wap.wbmp", |
|
".ras": "image/x-cmu-raster", |
|
".pnm": "image/x-portable-anymap", |
|
".pbm": "image/x-portable-bitmap", |
|
".pgm": "image/x-portable-graymap", |
|
".ppm": "image/x-portable-pixmap", |
|
".rgb": "image/x-rgb", |
|
".xbm": "image/x-xbitmap", |
|
".xpm": "image/x-xpixmap", |
|
".xwd": "image/x-xwindowdump", |
|
".css": "text/css", |
|
".rtx": "text/richtext", |
|
".tsv": "text/tab-separated-values", |
|
".jad": "text/vnd.sun.j2me.app-descriptor", |
|
".wml": "text/vnd.wap.wml", |
|
".wmls": "text/vnd.wap.wmlscript", |
|
".etx": "text/x-setext", |
|
".mxu": "video/vnd.mpegurl", |
|
".flv": "video/x-flv", |
|
".wm": "video/x-ms-wm", |
|
".wmv": "video/x-ms-wmv", |
|
".wmx": "video/x-ms-wmx", |
|
".wvx": "video/x-ms-wvx", |
|
".avi": "video/x-msvideo", |
|
".movie": "video/x-sgi-movie", |
|
".ice": "x-conference/x-cooltalk", |
|
".3gp": "video/3gpp", |
|
".ai": "application/postscript", |
|
".aif": "audio/x-aiff", |
|
".aifc": "audio/x-aiff", |
|
".aiff": "audio/x-aiff", |
|
".asc": "text/plain", |
|
".atom": "application/atom+xml", |
|
".au": "audio/basic", |
|
".bin": "application/octet-stream", |
|
".cdf": "application/x-netcdf", |
|
".cgm": "image/cgm", |
|
".class": "application/octet-stream", |
|
".dcr": "application/x-director", |
|
".dif": "video/x-dv", |
|
".dir": "application/x-director", |
|
".djv": "image/vnd.djvu", |
|
".djvu": "image/vnd.djvu", |
|
".dll": "application/octet-stream", |
|
".dmg": "application/octet-stream", |
|
".dms": "application/octet-stream", |
|
".dtd": "application/xml-dtd", |
|
".dv": "video/x-dv", |
|
".dxr": "application/x-director", |
|
".eps": "application/postscript", |
|
".exe": "application/octet-stream", |
|
".ez": "application/andrew-inset", |
|
".gram": "application/srgs", |
|
".grxml": "application/srgs+xml", |
|
".gz": "application/x-gzip", |
|
".htm": "text/html", |
|
".html": "text/html", |
|
".ico": "image/x-icon", |
|
".ics": "text/calendar", |
|
".ifb": "text/calendar", |
|
".iges": "model/iges", |
|
".igs": "model/iges", |
|
".jp2": "image/jp2", |
|
".jpe": "image/jpeg", |
|
".jpeg": "image/jpeg", |
|
".jpg": "image/jpeg", |
|
".kar": "audio/midi", |
|
".lha": "application/octet-stream", |
|
".lzh": "application/octet-stream", |
|
".m4a": "audio/mp4a-latm", |
|
".m4p": "audio/mp4a-latm", |
|
".m4u": "video/vnd.mpegurl", |
|
".m4v": "video/x-m4v", |
|
".mac": "image/x-macpaint", |
|
".mathml": "application/mathml+xml", |
|
".mesh": "model/mesh", |
|
".mid": "audio/midi", |
|
".midi": "audio/midi", |
|
".mov": "video/quicktime", |
|
".mp2": "audio/mpeg", |
|
".mp3": "audio/mpeg", |
|
".mp4": "video/mp4", |
|
".mpe": "video/mpeg", |
|
".mpeg": "video/mpeg", |
|
".mpg": "video/mpeg", |
|
".mpga": "audio/mpeg", |
|
".msh": "model/mesh", |
|
".nc": "application/x-netcdf", |
|
".oda": "application/oda", |
|
".ogv": "video/ogv", |
|
".pct": "image/pict", |
|
".pic": "image/pict", |
|
".pict": "image/pict", |
|
".pnt": "image/x-macpaint", |
|
".pntg": "image/x-macpaint", |
|
".ps": "application/postscript", |
|
".qt": "video/quicktime", |
|
".qti": "image/x-quicktime", |
|
".qtif": "image/x-quicktime", |
|
".ram": "audio/x-pn-realaudio", |
|
".rdf": "application/rdf+xml", |
|
".rm": "application/vnd.rn-realmedia", |
|
".roff": "application/x-troff", |
|
".sgm": "text/sgml", |
|
".sgml": "text/sgml", |
|
".silo": "model/mesh", |
|
".skd": "application/x-koan", |
|
".skm": "application/x-koan", |
|
".skp": "application/x-koan", |
|
".skt": "application/x-koan", |
|
".smi": "application/smil", |
|
".smil": "application/smil", |
|
".snd": "audio/basic", |
|
".so": "application/octet-stream", |
|
".svg": "image/svg+xml", |
|
".t": "application/x-troff", |
|
".texi": "application/x-texinfo", |
|
".texinfo": "application/x-texinfo", |
|
".tif": "image/tiff", |
|
".tiff": "image/tiff", |
|
".tr": "application/x-troff", |
|
".txt": "text/plain", |
|
".vrml": "model/vrml", |
|
".vxml": "application/voicexml+xml", |
|
".webm": "video/webm", |
|
".wrl": "model/vrml", |
|
".xht": "application/xhtml+xml", |
|
".xhtml": "application/xhtml+xml", |
|
".xml": "application/xml", |
|
".xsl": "application/xml", |
|
".xslt": "application/xslt+xml", |
|
".xul": "application/vnd.mozilla.xul+xml", |
|
} |
|
|
|
// TypeByExtension returns the MIME type associated with the file extension ext. |
|
// gets the file's MIME type for HTTP header Content-Type |
|
func TypeByExtension(filePath string) string { |
|
typ := mime.TypeByExtension(path.Ext(filePath)) |
|
if typ == "" { |
|
typ = extToMimeType[strings.ToLower(path.Ext(filePath))] |
|
} |
|
return typ |
|
}
|
|
|