9 var extToMimeType = map[string]string{
10 ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
11 ".xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
12 ".potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
13 ".ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
14 ".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
15 ".sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide",
16 ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
17 ".dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
18 ".xlam": "application/vnd.ms-excel.addin.macroEnabled.12",
19 ".xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
20 ".apk": "application/vnd.android.package-archive",
21 ".hqx": "application/mac-binhex40",
22 ".cpt": "application/mac-compactpro",
23 ".doc": "application/msword",
24 ".ogg": "application/ogg",
25 ".pdf": "application/pdf",
27 ".mif": "application/vnd.mif",
28 ".xls": "application/vnd.ms-excel",
29 ".ppt": "application/vnd.ms-powerpoint",
30 ".odc": "application/vnd.oasis.opendocument.chart",
31 ".odb": "application/vnd.oasis.opendocument.database",
32 ".odf": "application/vnd.oasis.opendocument.formula",
33 ".odg": "application/vnd.oasis.opendocument.graphics",
34 ".otg": "application/vnd.oasis.opendocument.graphics-template",
35 ".odi": "application/vnd.oasis.opendocument.image",
36 ".odp": "application/vnd.oasis.opendocument.presentation",
37 ".otp": "application/vnd.oasis.opendocument.presentation-template",
38 ".ods": "application/vnd.oasis.opendocument.spreadsheet",
39 ".ots": "application/vnd.oasis.opendocument.spreadsheet-template",
40 ".odt": "application/vnd.oasis.opendocument.text",
41 ".odm": "application/vnd.oasis.opendocument.text-master",
42 ".ott": "application/vnd.oasis.opendocument.text-template",
43 ".oth": "application/vnd.oasis.opendocument.text-web",
44 ".sxw": "application/vnd.sun.xml.writer",
45 ".stw": "application/vnd.sun.xml.writer.template",
46 ".sxc": "application/vnd.sun.xml.calc",
47 ".stc": "application/vnd.sun.xml.calc.template",
48 ".sxd": "application/vnd.sun.xml.draw",
49 ".std": "application/vnd.sun.xml.draw.template",
50 ".sxi": "application/vnd.sun.xml.impress",
51 ".sti": "application/vnd.sun.xml.impress.template",
52 ".sxg": "application/vnd.sun.xml.writer.global",
53 ".sxm": "application/vnd.sun.xml.math",
54 ".sis": "application/vnd.symbian.install",
55 ".wbxml": "application/vnd.wap.wbxml",
56 ".wmlc": "application/vnd.wap.wmlc",
57 ".wmlsc": "application/vnd.wap.wmlscriptc",
58 ".bcpio": "application/x-bcpio",
59 ".torrent": "application/x-bittorrent",
60 ".bz2": "application/x-bzip2",
61 ".vcd": "application/x-cdlink",
62 ".pgn": "application/x-chess-pgn",
63 ".cpio": "application/x-cpio",
64 ".csh": "application/x-csh",
65 ".dvi": "application/x-dvi",
66 ".spl": "application/x-futuresplash",
67 ".gtar": "application/x-gtar",
68 ".hdf": "application/x-hdf",
69 ".jar": "application/x-java-archive",
70 ".jnlp": "application/x-java-jnlp-file",
71 ".js": "application/x-javascript",
72 ".ksp": "application/x-kspread",
73 ".chrt": "application/x-kchart",
74 ".kil": "application/x-killustrator",
75 ".latex": "application/x-latex",
76 ".rpm": "application/x-rpm",
77 ".sh": "application/x-sh",
78 ".shar": "application/x-shar",
79 ".swf": "application/x-shockwave-flash",
80 ".sit": "application/x-stuffit",
81 ".sv4cpio": "application/x-sv4cpio",
82 ".sv4crc": "application/x-sv4crc",
83 ".tar": "application/x-tar",
84 ".tcl": "application/x-tcl",
85 ".tex": "application/x-tex",
86 ".man": "application/x-troff-man",
87 ".me": "application/x-troff-me",
88 ".ms": "application/x-troff-ms",
89 ".ustar": "application/x-ustar",
90 ".src": "application/x-wais-source",
91 ".zip": "application/zip",
92 ".m3u": "audio/x-mpegurl",
93 ".ra": "audio/x-pn-realaudio",
94 ".wav": "audio/x-wav",
95 ".wma": "audio/x-ms-wma",
96 ".wax": "audio/x-ms-wax",
97 ".pdb": "chemical/x-pdb",
98 ".xyz": "chemical/x-xyz",
103 ".wbmp": "image/vnd.wap.wbmp",
104 ".ras": "image/x-cmu-raster",
105 ".pnm": "image/x-portable-anymap",
106 ".pbm": "image/x-portable-bitmap",
107 ".pgm": "image/x-portable-graymap",
108 ".ppm": "image/x-portable-pixmap",
109 ".rgb": "image/x-rgb",
110 ".xbm": "image/x-xbitmap",
111 ".xpm": "image/x-xpixmap",
112 ".xwd": "image/x-xwindowdump",
114 ".rtx": "text/richtext",
115 ".tsv": "text/tab-separated-values",
116 ".jad": "text/vnd.sun.j2me.app-descriptor",
117 ".wml": "text/vnd.wap.wml",
118 ".wmls": "text/vnd.wap.wmlscript",
119 ".etx": "text/x-setext",
120 ".mxu": "video/vnd.mpegurl",
121 ".flv": "video/x-flv",
122 ".wm": "video/x-ms-wm",
123 ".wmv": "video/x-ms-wmv",
124 ".wmx": "video/x-ms-wmx",
125 ".wvx": "video/x-ms-wvx",
126 ".avi": "video/x-msvideo",
127 ".movie": "video/x-sgi-movie",
128 ".ice": "x-conference/x-cooltalk",
129 ".3gp": "video/3gpp",
130 ".ai": "application/postscript",
131 ".aif": "audio/x-aiff",
132 ".aifc": "audio/x-aiff",
133 ".aiff": "audio/x-aiff",
134 ".asc": "text/plain",
135 ".atom": "application/atom+xml",
136 ".au": "audio/basic",
137 ".bin": "application/octet-stream",
138 ".cdf": "application/x-netcdf",
140 ".class": "application/octet-stream",
141 ".dcr": "application/x-director",
142 ".dif": "video/x-dv",
143 ".dir": "application/x-director",
144 ".djv": "image/vnd.djvu",
145 ".djvu": "image/vnd.djvu",
146 ".dll": "application/octet-stream",
147 ".dmg": "application/octet-stream",
148 ".dms": "application/octet-stream",
149 ".dtd": "application/xml-dtd",
151 ".dxr": "application/x-director",
152 ".eps": "application/postscript",
153 ".exe": "application/octet-stream",
154 ".ez": "application/andrew-inset",
155 ".gram": "application/srgs",
156 ".grxml": "application/srgs+xml",
157 ".gz": "application/x-gzip",
159 ".html": "text/html",
160 ".ico": "image/x-icon",
161 ".ics": "text/calendar",
162 ".ifb": "text/calendar",
163 ".iges": "model/iges",
164 ".igs": "model/iges",
166 ".jpe": "image/jpeg",
167 ".jpeg": "image/jpeg",
168 ".jpg": "image/jpeg",
169 ".kar": "audio/midi",
170 ".lha": "application/octet-stream",
171 ".lzh": "application/octet-stream",
172 ".m4a": "audio/mp4a-latm",
173 ".m4p": "audio/mp4a-latm",
174 ".m4u": "video/vnd.mpegurl",
175 ".m4v": "video/x-m4v",
176 ".mac": "image/x-macpaint",
177 ".mathml": "application/mathml+xml",
178 ".mesh": "model/mesh",
179 ".mid": "audio/midi",
180 ".midi": "audio/midi",
181 ".mov": "video/quicktime",
182 ".mp2": "audio/mpeg",
183 ".mp3": "audio/mpeg",
185 ".mpe": "video/mpeg",
186 ".mpeg": "video/mpeg",
187 ".mpg": "video/mpeg",
188 ".mpga": "audio/mpeg",
189 ".msh": "model/mesh",
190 ".nc": "application/x-netcdf",
191 ".oda": "application/oda",
193 ".pct": "image/pict",
194 ".pic": "image/pict",
195 ".pict": "image/pict",
196 ".pnt": "image/x-macpaint",
197 ".pntg": "image/x-macpaint",
198 ".ps": "application/postscript",
199 ".qt": "video/quicktime",
200 ".qti": "image/x-quicktime",
201 ".qtif": "image/x-quicktime",
202 ".ram": "audio/x-pn-realaudio",
203 ".rdf": "application/rdf+xml",
204 ".rm": "application/vnd.rn-realmedia",
205 ".roff": "application/x-troff",
207 ".sgml": "text/sgml",
208 ".silo": "model/mesh",
209 ".skd": "application/x-koan",
210 ".skm": "application/x-koan",
211 ".skp": "application/x-koan",
212 ".skt": "application/x-koan",
213 ".smi": "application/smil",
214 ".smil": "application/smil",
215 ".snd": "audio/basic",
216 ".so": "application/octet-stream",
217 ".svg": "image/svg+xml",
218 ".t": "application/x-troff",
219 ".texi": "application/x-texinfo",
220 ".texinfo": "application/x-texinfo",
221 ".tif": "image/tiff",
222 ".tiff": "image/tiff",
223 ".tr": "application/x-troff",
224 ".txt": "text/plain",
225 ".vrml": "model/vrml",
226 ".vxml": "application/voicexml+xml",
227 ".webm": "video/webm",
228 ".wrl": "model/vrml",
229 ".xht": "application/xhtml+xml",
230 ".xhtml": "application/xhtml+xml",
231 ".xml": "application/xml",
232 ".xsl": "application/xml",
233 ".xslt": "application/xslt+xml",
234 ".xul": "application/vnd.mozilla.xul+xml",
235 ".webp": "image/webp",
237 ".aab": "application/x-authoware-bin",
238 ".aam": "application/x-authoware-map",
239 ".aas": "application/x-authoware-seg",
240 ".acx": "application/internet-property-stream",
241 ".als": "audio/X-Alpha5",
242 ".amc": "application/x-mpeg",
243 ".ani": "application/octet-stream",
244 ".asd": "application/astound",
245 ".asf": "video/x-ms-asf",
246 ".asn": "application/astound",
247 ".asp": "application/x-asap",
248 ".asr": "video/x-ms-asf",
249 ".asx": "video/x-ms-asf",
250 ".avb": "application/octet-stream",
251 ".awb": "audio/amr-wb",
252 ".axs": "application/olescript",
253 ".bas": "text/plain",
254 ".bin ": "application/octet-stream",
255 ".bld": "application/bld",
256 ".bld2": "application/bld2",
257 ".bpk": "application/octet-stream",
259 ".cal": "image/x-cals",
260 ".cat": "application/vnd.ms-pkiseccat",
261 ".ccn": "application/x-cnc",
262 ".cco": "application/x-cocoa",
263 ".cer": "application/x-x509-ca-cert",
264 ".cgi": "magnus-internal/cgi",
265 ".chat": "application/x-chat",
266 ".clp": "application/x-msclip",
267 ".cmx": "image/x-cmx",
268 ".co": "application/x-cult3d-object",
269 ".cod": "image/cis-cod",
270 ".conf": "text/plain",
271 ".cpp": "text/plain",
272 ".crd": "application/x-mscardfile",
273 ".crl": "application/pkix-crl",
274 ".crt": "application/x-x509-ca-cert",
275 ".csm": "chemical/x-csml",
276 ".csml": "chemical/x-csml",
277 ".cur": "application/octet-stream",
278 ".dcm": "x-lml/x-evm",
279 ".dcx": "image/x-dcx",
280 ".der": "application/x-x509-ca-cert",
281 ".dhtml": "text/html",
282 ".dot": "application/msword",
283 ".dwf": "drawing/x-dwf",
284 ".dwg": "application/x-autocad",
285 ".dxf": "application/x-autocad",
286 ".ebk": "application/x-expandedbook",
287 ".emb": "chemical/x-embl-dl-nucleotide",
288 ".embl": "chemical/x-embl-dl-nucleotide",
289 ".epub": "application/epub+zip",
290 ".eri": "image/x-eri",
291 ".es": "audio/echospeech",
292 ".esl": "audio/echospeech",
293 ".etc": "application/x-earthtime",
294 ".evm": "x-lml/x-evm",
295 ".evy": "application/envoy",
296 ".fh4": "image/x-freehand",
297 ".fh5": "image/x-freehand",
298 ".fhc": "image/x-freehand",
299 ".fif": "application/fractals",
300 ".flr": "x-world/x-vrml",
301 ".fm": "application/x-maker",
302 ".fpx": "image/x-fpx",
303 ".fvi": "video/isivideo",
304 ".gau": "chemical/x-gaussian-input",
305 ".gca": "application/x-gca-compressed",
306 ".gdb": "x-lml/x-gdb",
307 ".gps": "application/x-gps",
309 ".hdm": "text/x-hdml",
310 ".hdml": "text/x-hdml",
311 ".hlp": "application/winhlp",
312 ".hta": "application/hta",
313 ".htc": "text/x-component",
315 ".htt": "text/webviewhtml",
318 ".iii": "application/x-iphone",
319 ".imy": "audio/melody",
320 ".ins": "application/x-internet-signup",
321 ".ips": "application/x-ipscript",
322 ".ipx": "application/x-ipix",
323 ".isp": "application/x-internet-signup",
324 ".it": "audio/x-mod",
325 ".itz": "audio/x-mod",
326 ".ivr": "i-world/i-vrml",
328 ".jam": "application/x-jam",
329 ".java": "text/plain",
330 ".jfif": "image/pipeg",
331 ".jpz": "image/jpeg",
332 ".jwc": "application/jwc",
333 ".kjx": "application/x-kjx",
334 ".lak": "x-lml/x-lak",
335 ".lcc": "application/fastman",
336 ".lcl": "application/x-digitalloca",
337 ".lcr": "application/x-digitalloca",
338 ".lgh": "application/lgh",
339 ".lml": "x-lml/x-lml",
340 ".lmlpack": "x-lml/x-lmlpack",
341 ".log": "text/plain",
342 ".lsf": "video/x-la-asf",
343 ".lsx": "video/x-la-asf",
344 ".m13": "application/x-msmediaview",
345 ".m14": "application/x-msmediaview",
346 ".m15": "audio/x-mod",
347 ".m3url": "audio/x-mpegurl",
348 ".m4b": "audio/mp4a-latm",
353 ".map": "magnus-internal/imagemap",
354 ".mbd": "application/mbedlet",
355 ".mct": "application/x-mascot",
356 ".mdb": "application/x-msaccess",
357 ".mdz": "audio/x-mod",
358 ".mel": "text/x-vmel",
359 ".mht": "message/rfc822",
360 ".mhtml": "message/rfc822",
361 ".mi": "application/x-mif",
362 ".mil": "image/x-cals",
363 ".mio": "audio/x-mio",
364 ".mmf": "application/x-skt-lbs",
365 ".mng": "video/x-mng",
366 ".mny": "application/x-msmoney",
367 ".moc": "application/x-mocha",
368 ".mocha": "application/x-mocha",
369 ".mod": "audio/x-mod",
370 ".mof": "application/x-yumekara",
371 ".mol": "chemical/x-mdl-molfile",
372 ".mop": "chemical/x-mopac-input",
373 ".mpa": "video/mpeg",
374 ".mpc": "application/vnd.mpohun.certificate",
375 ".mpg4": "video/mp4",
376 ".mpn": "application/vnd.mophun.application",
377 ".mpp": "application/vnd.ms-project",
378 ".mps": "application/x-mapserver",
379 ".mpv2": "video/mpeg",
380 ".mrl": "text/x-mrml",
381 ".mrm": "application/x-mrm",
382 ".msg": "application/vnd.ms-outlook",
383 ".mts": "application/metastream",
384 ".mtx": "application/metastream",
385 ".mtz": "application/metastream",
386 ".mvb": "application/x-msmediaview",
387 ".mzv": "application/metastream",
388 ".nar": "application/zip",
389 ".nbmp": "image/nbmp",
390 ".ndb": "x-lml/x-ndb",
391 ".ndwn": "application/ndwn",
392 ".nif": "application/x-nif",
393 ".nmz": "application/x-scream",
394 ".nokia-op-logo": "image/vnd.nok-oplogo-color",
395 ".npx": "application/x-netfpx",
396 ".nsnd": "audio/nsnd",
397 ".nva": "application/x-neva1",
398 ".nws": "message/rfc822",
399 ".oom": "application/x-AtlasMate-Plugin",
400 ".p10": "application/pkcs10",
401 ".p12": "application/x-pkcs12",
402 ".p7b": "application/x-pkcs7-certificates",
403 ".p7c": "application/x-pkcs7-mime",
404 ".p7m": "application/x-pkcs7-mime",
405 ".p7r": "application/x-pkcs7-certreqresp",
406 ".p7s": "application/x-pkcs7-signature",
407 ".pac": "audio/x-pac",
408 ".pae": "audio/x-epac",
409 ".pan": "application/x-pan",
410 ".pcx": "image/x-pcx",
411 ".pda": "image/x-pda",
412 ".pfr": "application/font-tdpfr",
413 ".pfx": "application/x-pkcs12",
414 ".pko": "application/ynd.ms-pkipko",
415 ".pm": "application/x-perl",
416 ".pma": "application/x-perfmon",
417 ".pmc": "application/x-perfmon",
418 ".pmd": "application/x-pmd",
419 ".pml": "application/x-perfmon",
420 ".pmr": "application/x-perfmon",
421 ".pmw": "application/x-perfmon",
423 ".pot,": "application/vnd.ms-powerpoint",
424 ".pps": "application/vnd.ms-powerpoint",
425 ".pqf": "application/x-cprplayer",
426 ".pqi": "application/cprplayer",
427 ".prc": "application/x-prc",
428 ".prf": "application/pics-rules",
429 ".prop": "text/plain",
430 ".proxy": "application/x-ns-proxy-autoconfig",
431 ".ptlk": "application/listenup",
432 ".pub": "application/x-mspublisher",
433 ".pvx": "video/x-pv-pvx",
434 ".qcp": "audio/vnd.qcelp",
435 ".r3t": "text/vnd.rn-realtext3d",
436 ".rar": "application/octet-stream",
438 ".rf": "image/vnd.rn-realflash",
439 ".rlf": "application/x-richlink",
440 ".rmf": "audio/x-rmf",
442 ".rmm": "audio/x-pn-realaudio",
443 ".rmvb": "audio/x-pn-realaudio",
444 ".rnx": "application/vnd.rn-realplayer",
445 ".rp": "image/vnd.rn-realpix",
446 ".rt": "text/vnd.rn-realtext",
447 ".rte": "x-lml/x-gps",
448 ".rtg": "application/metastream",
449 ".rv": "video/vnd.rn-realvideo",
450 ".rwc": "application/x-rogerwilco",
451 ".s3m": "audio/x-mod",
452 ".s3z": "audio/x-mod",
453 ".sca": "application/x-supercard",
454 ".scd": "application/x-msschedule",
455 ".sct": "text/scriptlet",
456 ".sdf": "application/e-score",
457 ".sea": "application/x-stuffit",
458 ".setpay": "application/set-payment-initiation",
459 ".setreg": "application/set-registration-initiation",
460 ".shtml": "text/html",
461 ".shtm": "text/html",
462 ".shw": "application/presentations",
464 ".si7": "image/vnd.stiwap.sis",
465 ".si9": "image/vnd.lgtwap.sis",
466 ".slc": "application/x-salsa",
467 ".smd": "audio/x-smd",
468 ".smp": "application/studiom",
469 ".smz": "audio/x-smd",
470 ".spc": "application/x-pkcs7-certificates",
471 ".spr": "application/x-sprite",
472 ".sprite": "application/x-sprite",
473 ".sdp": "application/sdp",
474 ".spt": "application/x-spt",
475 ".sst": "application/vnd.ms-pkicertstore",
476 ".stk": "application/hyperstudio",
477 ".stl": "application/vnd.ms-pkistl",
481 ".svr": "x-world/x-svr",
482 ".swfl": "application/x-shockwave-flash",
483 ".tad": "application/octet-stream",
484 ".talk": "text/x-speech",
485 ".taz": "application/x-tar",
486 ".tbp": "application/x-timbuktu",
487 ".tbt": "application/x-timbuktu",
488 ".tgz": "application/x-compressed",
489 ".thm": "application/vnd.eri.thm",
490 ".tki": "application/x-tkined",
491 ".tkined": "application/x-tkined",
492 ".toc": "application/toc",
494 ".trk": "x-lml/x-gps",
495 ".trm": "application/x-msterminal",
496 ".tsi": "audio/tsplayer",
497 ".tsp": "application/dsptype",
498 ".ttf": "application/octet-stream",
499 ".ttz": "application/t-time",
501 ".ult": "audio/x-mod",
502 ".uu": "application/x-uuencode",
503 ".uue": "application/x-uuencode",
504 ".vcf": "text/x-vcard",
507 ".viv": "video/vivo",
508 ".vivo": "video/vivo",
509 ".vmd": "application/vocaltec-media-desc",
510 ".vmf": "application/vocaltec-media-file",
511 ".vmi": "application/x-dreamcast-vms-info",
512 ".vms": "application/x-dreamcast-vms",
513 ".vox": "audio/voxware",
514 ".vqe": "audio/x-twinvq-plugin",
515 ".vqf": "audio/x-twinvq",
516 ".vql": "audio/x-twinvq",
517 ".vre": "x-world/x-vream",
518 ".vrt": "x-world/x-vrt",
519 ".vrw": "x-world/x-vream",
520 ".vts": "workbook/formulaone",
521 ".wcm": "application/vnd.ms-works",
522 ".wdb": "application/vnd.ms-works",
523 ".web": "application/vnd.xara",
524 ".wi": "image/wavelet",
525 ".wis": "application/x-InstallShield",
526 ".wks": "application/vnd.ms-works",
527 ".wmd": "application/x-ms-wmd",
528 ".wmf": "application/x-msmetafile",
529 ".wmlscript": "text/vnd.wap.wmlscript",
530 ".wmz": "application/x-ms-wmz",
531 ".wpng": "image/x-up-wpng",
532 ".wps": "application/vnd.ms-works",
533 ".wpt": "x-lml/x-gps",
534 ".wri": "application/x-mswrite",
535 ".wrz": "x-world/x-vrml",
536 ".ws": "text/vnd.wap.wmlscript",
537 ".wsc": "application/vnd.wap.wmlscriptc",
538 ".wv": "video/wavelet",
539 ".wxl": "application/x-wxl",
540 ".x-gzip": "application/x-gzip",
541 ".xaf": "x-world/x-vrml",
542 ".xar": "application/vnd.xara",
543 ".xdm": "application/x-xdma",
544 ".xdma": "application/x-xdma",
545 ".xdw": "application/vnd.fujixerox.docuworks",
546 ".xhtm": "application/xhtml+xml",
547 ".xla": "application/vnd.ms-excel",
548 ".xlc": "application/vnd.ms-excel",
549 ".xll": "application/x-excel",
550 ".xlm": "application/vnd.ms-excel",
551 ".xlt": "application/vnd.ms-excel",
552 ".xlw": "application/vnd.ms-excel",
553 ".xm": "audio/x-mod",
554 ".xmz": "audio/x-mod",
555 ".xof": "x-world/x-vrml",
556 ".xpi": "application/x-xpinstall",
558 ".yz1": "application/x-yz1",
559 ".z": "application/x-compress",
560 ".zac": "application/x-zaurus-zac",
561 ".json": "application/json",
564 // TypeByExtension returns the MIME type associated with the file extension ext.
565 // gets the file's MIME type for HTTP header Content-Type
566 func TypeByExtension(filePath string) string {
567 typ := mime.TypeByExtension(path.Ext(filePath))
569 typ = extToMimeType[strings.ToLower(path.Ext(filePath))]