mime-kind
Version:
Detect the MIME type of a Buffer, Uint8Array, ArrayBuffer, ReadableStream, file path and file name, with async method.
66 lines (47 loc) • 2.58 kB
Markdown
mime-kind [](https://github.com/strikeentco/mime-kind/blob/master/LICENSE) [](https://www.npmjs.com/package/mime-kind)
==========
[](https://travis-ci.org/strikeentco/mime-kind) [](https://www.npmjs.com/package/mime-kind) [](https://codeclimate.com/github/strikeentco/mime-kind/test_coverage)
Detect the MIME type of a `Buffer`, `Uint8Array`, `ArrayBuffer`, `ReadableStream`, file path and file name, with `async` method.
```sh
$ npm install mime-kind --save
```
```js
const { createReadStream } = require('fs');
const mime = require('mime-kind');
await mime('.fakeext'); // -> null
await mime(createReadStream('./anonim.jpg')); // -> { ext: 'jpeg', mime: 'image/jpeg' }
await mime('c:/anonim.jpeg'); // -> { ext: 'jpeg', mime: 'image/jpeg' }
```
Returns a `Promise` with an object (or `null` when no match) with:
* `ext` - file type
* `mime` - the [MIME type](http://en.wikipedia.org/wiki/Internet_media_type)
This methods supports all kind of `ReadableStreams`.
### Params:
* **input** (*String|Buffer|Uint8Array|ArrayBuffer|ReadableStream*) - `Buffer`, `Uint8Array`, `ArrayBuffer`, `ReadableStream`, file path or file name.
* **[defaultValue]** (*String|Object*) - `String` or `Object` with value which will be returned if no match will be found. If `defaultValue` is incorrect returns `null`.
```js
const mime = require('mime-kind');
await mime('.fakeext', 'application/octet-stream'); // -> { ext: 'bin', mime: 'application/octet-stream' }
await mime.async('.fakeext', { ext: 'mp4', mime: 'video/mp4' }); // -> { ext: 'mp4', mime: 'video/mp4' }
await mime.async('.fakeext', 'ogg'); // -> { ext: 'ogg', mime: 'audio/ogg' }
// but
await mime.async('.fakeext', 'ogg3'); // -> null
await mime('.fakeext', { ext: 'fake', mime: 'fake/fake' }); // -> null
```
With `HTTP(S)` streams:
```js
const mime = require('mime-kind');
const { get } = require('https');
const { PassThrough } = require('stream');
const pass = new PassThrough();
get('https://avatars0.githubusercontent.com/u/2401029', res => res.pipe(pass));
await mime(pass); // -> { ext: 'jpg', mime: 'image/jpeg' }
```
The MIT License (MIT)<br/>
Copyright (c) 2015-2022 Alexey Bystrov