| .. | ||
| index.js | ||
| license | ||
| package.json | ||
| readme.md | ||
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 typesmime- The MIME type
Or null when no match.
input
Type: Buffer Uint8Array
It only needs the first 4100 bytes. The exception is detection of docx, pptx, and xlsx which potentially requires reading the whole file.
Supported file types
jpgpnggifwebpflifcr2tifbmpjxrpsdziptarrargzbz27zdmgmp4m4vmidmkvwebmmovaviwmvmpgmp2mp3m4aoggopusflacwavqcpamrpdfepubmobi- Mobipocketexeswfrtfwoffwoff2eotttfotficoflvpsxzsqlitenescrxxpicabdebarrpmZlzmsimxfmtswasmblendbpgdocxpptxxlsx3gpjp2- JPEG 2000jpm- JPEG 2000jpx- JPEG 2000mj2- Motion JPEG 2000aifodt- OpenDocument for word processingods- OpenDocument for spreadsheetsodp- OpenDocument for presentationsxmlheiccurktxape- Monkey's Audiowv- WavPack
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