github.com/safing/portbase@v0.19.5/utils/mimetypes.go (about) 1 package utils 2 3 import "strings" 4 5 // Do not depend on the OS for mimetypes. 6 // A Windows update screwed us over here and broke all the automatic mime 7 // typing via Go in April 2021. 8 9 // MimeTypeByExtension returns a mimetype for the given file name extension, 10 // which must including the leading dot. 11 // If the extension is not known, the call returns with ok=false and, 12 // additionally, a default "application/octet-stream" mime type is returned. 13 func MimeTypeByExtension(ext string) (mimeType string, ok bool) { 14 mimeType, ok = mimeTypes[strings.ToLower(ext)] 15 if ok { 16 return 17 } 18 19 return defaultMimeType, false 20 } 21 22 var ( 23 defaultMimeType = "application/octet-stream" 24 25 mimeTypes = map[string]string{ 26 ".7z": "application/x-7z-compressed", 27 ".atom": "application/atom+xml", 28 ".css": "text/css; charset=utf-8", 29 ".csv": "text/csv; charset=utf-8", 30 ".deb": "application/x-debian-package", 31 ".epub": "application/epub+zip", 32 ".es": "application/ecmascript", 33 ".flv": "video/x-flv", 34 ".gif": "image/gif", 35 ".gz": "application/gzip", 36 ".htm": "text/html; charset=utf-8", 37 ".html": "text/html; charset=utf-8", 38 ".jpeg": "image/jpeg", 39 ".jpg": "image/jpeg", 40 ".js": "text/javascript; charset=utf-8", 41 ".json": "application/json; charset=utf-8", 42 ".m3u": "audio/mpegurl", 43 ".m4a": "audio/mpeg", 44 ".md": "text/markdown; charset=utf-8", 45 ".mjs": "text/javascript; charset=utf-8", 46 ".mov": "video/quicktime", 47 ".mp3": "audio/mpeg", 48 ".mp4": "video/mp4", 49 ".mpeg": "video/mpeg", 50 ".mpg": "video/mpeg", 51 ".ogg": "audio/ogg", 52 ".ogv": "video/ogg", 53 ".otf": "font/otf", 54 ".pdf": "application/pdf", 55 ".png": "image/png", 56 ".qt": "video/quicktime", 57 ".rar": "application/rar", 58 ".rtf": "application/rtf", 59 ".svg": "image/svg+xml", 60 ".tar": "application/x-tar", 61 ".tiff": "image/tiff", 62 ".ts": "video/MP2T", 63 ".ttc": "font/collection", 64 ".ttf": "font/ttf", 65 ".txt": "text/plain; charset=utf-8", 66 ".wasm": "application/wasm", 67 ".wav": "audio/x-wav", 68 ".webm": "video/webm", 69 ".webp": "image/webp", 70 ".woff": "font/woff", 71 ".woff2": "font/woff2", 72 ".xml": "text/xml; charset=utf-8", 73 ".xz": "application/x-xz", 74 ".yaml": "application/yaml; charset=utf-8", 75 ".yml": "application/yaml; charset=utf-8", 76 ".zip": "application/zip", 77 } 78 )