What is mime-types?
The mime-types npm package is a utility for resolving file extensions to MIME types and vice versa. It is based on the mime-db dataset, which is a comprehensive set of MIME type definitions.
What are mime-types's main functionalities?
Lookup MIME type for a file extension
This feature allows you to find the MIME type for a given file extension. If the extension has a MIME type in the database, it will return it as a string; otherwise, it will return false.
const mime = require('mime-types');
const mimeType = mime.lookup('json'); // 'application/json'
Determine the default extension for a MIME type
This feature enables you to find the default file extension for a given MIME type. If the MIME type has an associated extension, it will return it as a string; otherwise, it will return false.
const mime = require('mime-types');
const extension = mime.extension('application/json'); // 'json'
Lookup charset for a MIME type
This feature allows you to find the default charset for a given MIME type, which can be useful when setting the 'Content-Type' header in HTTP responses.
const mime = require('mime-types');
const charset = mime.charset('text/markdown'); // 'UTF-8'
Content-Type parsing
This feature is used to build a full Content-Type header given a MIME type or extension. It will also append the charset parameter when appropriate.
const mime = require('mime-types');
const contentType = mime.contentType('markdown'); // 'text/markdown; charset=utf-8'
Other packages similar to mime-types
mime
The 'mime' package is similar to 'mime-types' and provides MIME type lookup and extension lookup. It differs in that it allows for custom MIME type definitions and has a slightly different API.
file-type
The 'file-type' package is used to detect the file type and MIME type of a Buffer/Uint8Array/ArrayBuffer. Unlike 'mime-types', it does not rely on file extensions and can detect the type of binary content.
mime-types
The ultimate javascript content-type utility.
Similar to node-mime, except:
- No fallbacks. Instead of naively returning the first available type,
mime-types
simply returns false
,
so do var type = mime.lookup('unrecognized') || 'application/octet-stream'
. - No
new Mime()
business, so you could do var lookup = require('mime-types').lookup
. - Additional mime types are added such as jade and stylus via mime-db
- No
.define()
functionality
Otherwise, the API is compatible.
Install
$ npm install mime-types
Adding Types
All mime types are based on mime-db,
so open a PR there if you'd like to add mime types.
API
var mime = require('mime-types')
All functions return false
if input is invalid or not found.
mime.lookup(path)
Lookup the content-type associated with a file.
mime.lookup('json')
mime.lookup('.md')
mime.lookup('file.html')
mime.lookup('folder/file.js')
mime.lookup('cats')
mime.contentType(type)
Create a full content-type header given a content-type or extension.
mime.contentType('markdown')
mime.contentType('file.json')
mime.contentType(path.extname('/path/to/file.json'))
mime.extension(type)
Get the default extension for a content-type.
mime.extension('application/octet-stream')
mime.charset(type)
Lookup the implied default charset of a content-type.
mime.charset('text/x-markdown')
var type = mime.types[extension]
A map of content-types by extension.
[extensions...] = mime.extensions[type]
A map of extensions by content-type.
License
MIT