readme.md
6.5 KB
file-type
Detect the file type of a Buffer/Uint8Array
The file type is detected by checking the magic number of the buffer.
Install
$ npm install file-type
Usage
Node.js
const readChunk = require('read-chunk');
const fileType = require('file-type');
const buffer = readChunk.sync('unicorn.png', 0, 4100);
fileType(buffer);
//=> {ext: 'png', mime: 'image/png'}
Or from a remote location:
const http = require('http');
const fileType = require('file-type');
const url = 'http://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif';
http.get(url, res => {
res.once('data', chunk => {
res.destroy();
console.log(fileType(chunk));
//=> {ext: 'gif', mime: 'image/gif'}
});
});
Browser
const xhr = new XMLHttpRequest();
xhr.open('GET', 'unicorn.png');
xhr.responseType = 'arraybuffer';
xhr.onload = () => {
fileType(new Uint8Array(this.response));
//=> {ext: 'png', mime: 'image/png'}
};
xhr.send();
API
fileType(input)
Returns an Object with:
-
ext- One of the supported file types -
mime- The MIME type
Or null when no match.
input
Type: Buffer Uint8Array
It only needs the first 4100 bytes.
Supported file types
jpgpnggifwebpflifcr2tifbmpjxrpsdziptarrargzbz27zdmgmp4m4vmidmkvwebmmovaviwmvmpgmp2mp3m4aoggopusflacwavamrpdfepub-
mobi- Mobipocket exeswfrtfwoffwoff2eotttfotficoflvpsxzsqlitenescrxxpicabdebarrpmZlzmsimxfmtswasmblendbpgdocxpptxxlsx3gp-
jp2- JPEG 2000 -
jpm- JPEG 2000 -
jpx- JPEG 2000 -
mj2- Motion JPEG 2000 aif-
odt- OpenDocument for word processing -
ods- OpenDocument for spreadsheets -
odp- OpenDocument for presentations xmlheiccur
SVG isn't included as it requires the whole file to be read, but you can get it here.
Pull request welcome for additional commonly used file types.
Related
- file-type-cli - CLI for this module
Created by
License
MIT