Detect the file type of a Buffer/Uint8Array
npm install @marklb/file-type> Detect the file type of a Buffer/Uint8Array
The file type is detected by checking the magic number#Magic_numbers_in_files) of the buffer.
This repository is a fork of sindresorhus/file-type with ES5 build. IE couldn't load the script and the projects using this package are not configured to transpile dependencies.
Also started making a types file for typescript, but it isn't complete.
```
$ npm install file-type
##### Node.js
`js
const readChunk = require('read-chunk');
const fileType = require('file-type');
const buffer = readChunk.sync('unicorn.png', 0, fileType.minimumBytes);
fileType(buffer);
//=> {ext: 'png', mime: 'image/png'}
`
Or from a remote location:
`js
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, response => {
response.on('readable', () => {
const chunk = response.read(fileType.minimumBytes);
response.destroy();
console.log(fileType(chunk));
//=> {ext: 'gif', mime: 'image/gif'}
});
});
`
##### Browser
`js
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();
`
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 .minimumBytes bytes. The exception is detection of docx, pptx, and xlsx which potentially requires reading the whole file.
Type: number
The minimum amount of bytes needed to detect a file type. Currently, it's 4100 bytes, but it can change, so don't hardcode it.
- jpg
- png
- gif
- webp
- flif
- cr2
- tif
- bmp
- jxr
- psd
- zip)
- tar#File_format)
- rar)
- gz
- bz2
- 7z
- dmg
- mp4
- m4v
- mid
- mkv
- webm
- mov
- avi
- wmv
- mpg
- mp2
- mp3
- m4a
- ogg
- opus)
- flac
- wav
- qcp
- amr
- pdf
- epub
- mobi - Mobipocket
- exe
- swf
- rtf
- woff
- woff2
- eot
- ttf
- otf
- ico)
- flv
- ps
- xz
- sqlite
- nes
- crx
- xpi
- cab)
- deb)
- ar)
- rpm
- Z
- lz
- msi
- mxf
- mts
- wasm
- blend
- bpg
- docx
- pptx
- xlsx
- 3gp
- 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
- xml
- heic
- cur)
- ktx
- ape - Monkey's Audio
- wv - WavPack
- asf - Advanced Systems Format
- wma - Windows Media Audio
- wmv - Windows Media Video
- dcm - DICOM Image File
- mpc - Musepack (SV7 & SV8)
- ics` - iCalendar
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.
- file-type-cli - CLI for this module
- Sindre Sorhus
- Mikael Finstad
MIT