github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/oss/mime.go (about) 1 package oss 2 3 import ( 4 "mime" 5 "path" 6 "strings" 7 ) 8 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", 26 ".rtf": "text/rtf", 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", 99 ".bmp": "image/bmp", 100 ".gif": "image/gif", 101 ".ief": "image/ief", 102 ".png": "image/png", 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", 113 ".css": "text/css", 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", 139 ".cgm": "image/cgm", 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", 150 ".dv": "video/x-dv", 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", 158 ".htm": "text/html", 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", 165 ".jp2": "image/jp2", 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", 184 ".mp4": "video/mp4", 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", 192 ".ogv": "video/ogv", 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", 206 ".sgm": "text/sgml", 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", 236 ".323": "text/h323", 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", 258 ".c": "text/plain", 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", 308 ".h": "text/plain", 309 ".hdm": "text/x-hdml", 310 ".hdml": "text/x-hdml", 311 ".hlp": "application/winhlp", 312 ".hta": "application/hta", 313 ".htc": "text/x-component", 314 ".hts": "text/html", 315 ".htt": "text/webviewhtml", 316 ".ifm": "image/gif", 317 ".ifs": "image/ifs", 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", 327 ".j2k": "image/j2k", 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", 349 ".ma1": "audio/ma1", 350 ".ma2": "audio/ma2", 351 ".ma3": "audio/ma3", 352 ".ma5": "audio/ma5", 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", 422 ".pnz": "image/png", 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", 437 ".rc": "text/plain", 438 ".rf": "image/vnd.rn-realflash", 439 ".rlf": "application/x-richlink", 440 ".rmf": "audio/x-rmf", 441 ".rmi": "audio/mid", 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", 463 ".si6": "image/si6", 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", 478 ".stm": "text/html", 479 ".svf": "image/vnd", 480 ".svh": "image/svh", 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", 493 ".toy": "image/toy", 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", 500 ".uls": "text/iuls", 501 ".ult": "audio/x-mod", 502 ".uu": "application/x-uuencode", 503 ".uue": "application/x-uuencode", 504 ".vcf": "text/x-vcard", 505 ".vdo": "video/vdo", 506 ".vib": "audio/vib", 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", 557 ".xsit": "text/xml", 558 ".yz1": "application/x-yz1", 559 ".z": "application/x-compress", 560 ".zac": "application/x-zaurus-zac", 561 ".json": "application/json", 562 } 563 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)) 568 if typ == "" { 569 typ = extToMimeType[strings.ToLower(path.Ext(filePath))] 570 } else { 571 if strings.HasPrefix(typ, "text/") && strings.Contains(typ, "charset=") { 572 typ = removeCharsetInMimeType(typ) 573 } 574 } 575 return typ 576 } 577 578 // Remove charset from mime type 579 func removeCharsetInMimeType(typ string) (str string) { 580 temArr := strings.Split(typ, ";") 581 var builder strings.Builder 582 for i, s := range temArr { 583 tmpStr := strings.Trim(s, " ") 584 if strings.Contains(tmpStr, "charset=") { 585 continue 586 } 587 if i == 0 { 588 builder.WriteString(s) 589 } else { 590 builder.WriteString("; " + s) 591 } 592 } 593 return builder.String() 594 }