-
-
Save brettz9/5790179 to your computer and use it in GitHub Desktop.
File extensions and content type
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*globals module */ | |
// Adapted from https://gist.github.com/rrobe53/976610 | |
module.exports = (function () { | |
'use strict'; | |
var extensionTypeMap = { | |
"3gp": "video/3gpp", | |
"a": "application/octet-stream", | |
"ai": "application/postscript", | |
"aif": "audio/x-aiff", | |
"aiff": "audio/x-aiff", | |
"asc": "application/pgp-signature", | |
"asf": "video/x-ms-asf", | |
"asm": "text/x-asm", | |
"asx": "video/x-ms-asf", | |
"atom": "application/atom+xml", | |
"au": "audio/basic", | |
"avi": "video/x-msvideo", | |
"bat": "application/x-msdownload", | |
"bin": "application/octet-stream", | |
"bmp": "image/bmp", | |
"bz2": "application/x-bzip2", | |
"c": "text/x-c", | |
"cab": "application/vnd.ms-cab-compressed", | |
"cc": "text/x-c", | |
"chm": "application/vnd.ms-htmlhelp", | |
"class": "application/octet-stream", | |
"com": "application/x-msdownload", | |
"conf": "text/plain", | |
"cpp": "text/x-c", | |
"crt": "application/x-x509-ca-cert", | |
"css": "text/css", | |
"csv": "text/csv", | |
"cxx": "text/x-c", | |
"deb": "application/x-debian-package", | |
"der": "application/x-x509-ca-cert", | |
"diff": "text/x-diff", | |
"djv": "image/vnd.djvu", | |
"djvu": "image/vnd.djvu", | |
"dll": "application/x-msdownload", | |
"dmg": "application/octet-stream", | |
"doc": "application/msword", | |
"dot": "application/msword", | |
"dtd": "application/xml-dtd", | |
"dvi": "application/x-dvi", | |
"ear": "application/java-archive", | |
"eml": "message/rfc822", | |
"eps": "application/postscript", | |
"exe": "application/x-msdownload", | |
"f": "text/x-fortran", | |
"f77": "text/x-fortran", | |
"f90": "text/x-fortran", | |
"flv": "video/x-flv", | |
"for": "text/x-fortran", | |
"gem": "application/octet-stream", | |
"gemspec": "text/x-script.ruby", | |
"gif": "image/gif", | |
"gz": "application/x-gzip", | |
"h": "text/x-c", | |
"hh": "text/x-c", | |
"htm": "text/html", | |
"html": "text/html", | |
"ico": "image/vnd.microsoft.icon", | |
"ics": "text/calendar", | |
"ifb": "text/calendar", | |
"iso": "application/octet-stream", | |
"jar": "application/java-archive", | |
"java": "text/x-java-source", | |
"jnlp": "application/x-java-jnlp-file", | |
"jpeg": "image/jpeg", | |
"jpg": "image/jpeg", | |
"js": "application/javascript", | |
"json": "application/json", | |
"log": "text/plain", | |
"m3u": "audio/x-mpegurl", | |
"m4v": "video/mp4", | |
"man": "text/troff", | |
"mathml": "application/mathml+xml", | |
"mbox": "application/mbox", | |
"mdoc": "text/troff", | |
"me": "text/troff", | |
"mid": "audio/midi", | |
"midi": "audio/midi", | |
"mime": "message/rfc822", | |
"mml": "application/mathml+xml", | |
"mng": "video/x-mng", | |
"mov": "video/quicktime", | |
"mp3": "audio/mpeg", | |
"mp4": "video/mp4", | |
"mp4v": "video/mp4", | |
"mpeg": "video/mpeg", | |
"mpg": "video/mpeg", | |
"ms": "text/troff", | |
"msi": "application/x-msdownload", | |
"odp": "application/vnd.oasis.opendocument.presentation", | |
"ods": "application/vnd.oasis.opendocument.spreadsheet", | |
"odt": "application/vnd.oasis.opendocument.text", | |
"ogg": "application/ogg", | |
"p": "text/x-pascal", | |
"pas": "text/x-pascal", | |
"pbm": "image/x-portable-bitmap", | |
"pdf": "application/pdf", | |
"pem": "application/x-x509-ca-cert", | |
"pgm": "image/x-portable-graymap", | |
"pgp": "application/pgp-encrypted", | |
"pkg": "application/octet-stream", | |
"pl": "text/x-script.perl", | |
"pm": "text/x-script.perl-module", | |
"png": "image/png", | |
"pnm": "image/x-portable-anymap", | |
"ppm": "image/x-portable-pixmap", | |
"pps": "application/vnd.ms-powerpoint", | |
"ppt": "application/vnd.ms-powerpoint", | |
"ps": "application/postscript", | |
"psd": "image/vnd.adobe.photoshop", | |
"py": "text/x-script.python", | |
"qt": "video/quicktime", | |
"ra": "audio/x-pn-realaudio", | |
"rake": "text/x-script.ruby", | |
"ram": "audio/x-pn-realaudio", | |
"rar": "application/x-rar-compressed", | |
"rb": "text/x-script.ruby", | |
"rdf": "application/rdf+xml", | |
"roff": "text/troff", | |
"rpm": "application/x-redhat-package-manager", | |
"rss": "application/rss+xml", | |
"rtf": "application/rtf", | |
"ru": "text/x-script.ruby", | |
"s": "text/x-asm", | |
"sgm": "text/sgml", | |
"sgml": "text/sgml", | |
"sh": "application/x-sh", | |
"sig": "application/pgp-signature", | |
"snd": "audio/basic", | |
"so": "application/octet-stream", | |
"svg": "image/svg+xml", | |
"svgz": "image/svg+xml", | |
"swf": "application/x-shockwave-flash", | |
"t": "text/troff", | |
"tar": "application/x-tar", | |
"tbz": "application/x-bzip-compressed-tar", | |
"tcl": "application/x-tcl", | |
"tei": "application/tei+xml", | |
"tex": "application/x-tex", | |
"texi": "application/x-texinfo", | |
"texinfo": "application/x-texinfo", | |
"text": "text/plain", | |
"tif": "image/tiff", | |
"tiff": "image/tiff", | |
"torrent": "application/x-bittorrent", | |
"tr": "text/troff", | |
"txt": "text/plain", | |
"vcf": "text/x-vcard", | |
"vcs": "text/x-vcalendar", | |
"vrml": "model/vrml", | |
"war": "application/java-archive", | |
"wav": "audio/x-wav", | |
"wma": "audio/x-ms-wma", | |
"wmv": "video/x-ms-wmv", | |
"wmx": "video/x-ms-wmx", | |
"wrl": "model/vrml", | |
"wsdl": "application/wsdl+xml", | |
"xbm": "image/x-xbitmap", | |
"xhtml": "application/xhtml+xml", | |
"xls": "application/vnd.ms-excel", | |
"xml": "application/xml", | |
"xpm": "image/x-xpixmap", | |
"xsl": "application/xml", | |
"xslt": "application/xslt+xml", | |
"yaml": "text/yaml", | |
"yml": "text/yaml", | |
"zip": "application/zip" | |
}; | |
return { | |
extensionTypeMap: extensionTypeMap, | |
getExtensionForPath: function (path) { // or for Node, require('path').extname(path) but this includes "." | |
var i = path.lastIndexOf('.'); | |
return (i < 0) ? '' : path.substr(i); | |
}, | |
getContentTypeForExtension: function (ext) { | |
ext = ext.replace(/^\./, ''); | |
return extensionTypeMap[ext.toLowerCase()] || 'application/octet-stream'; | |
}, | |
getContentTypeForPath: function (path) { | |
return this.getContentTypeForExtension( | |
this.getExtensionForPath(path) | |
); | |
} | |
}; | |
}()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment