|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- # file-type [![Build Status](https://travis-ci.org/sindresorhus/file-type.svg?branch=master)](https://travis-ci.org/sindresorhus/file-type)
-
- > Detect the file type of a Buffer/Uint8Array
-
- The file type is detected by checking the [magic number](http://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files) of the buffer.
-
-
- ## Install
-
- ```
- $ npm install file-type
- ```
-
-
- ## Usage
-
- ##### Node.js
-
- ```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:
-
- ```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, res => {
- res.once('data', chunk => {
- res.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();
- ```
-
-
- ## API
-
- ### fileType(input)
-
- Returns an `Object` with:
-
- - `ext` - One of the [supported file types](#supported-file-types)
- - `mime` - The [MIME type](http://en.wikipedia.org/wiki/Internet_media_type)
-
- Or `null` when no match.
-
- #### input
-
- Type: `Buffer` `Uint8Array`
-
- It only needs the first 4100 bytes.
-
-
- ## Supported file types
-
- - [`jpg`](https://en.wikipedia.org/wiki/JPEG)
- - [`png`](https://en.wikipedia.org/wiki/Portable_Network_Graphics)
- - [`gif`](https://en.wikipedia.org/wiki/GIF)
- - [`webp`](https://en.wikipedia.org/wiki/WebP)
- - [`flif`](https://en.wikipedia.org/wiki/Free_Lossless_Image_Format)
- - [`cr2`](http://fileinfo.com/extension/cr2)
- - [`tif`](https://en.wikipedia.org/wiki/Tagged_Image_File_Format)
- - [`bmp`](https://en.wikipedia.org/wiki/BMP_file_format)
- - [`jxr`](https://en.wikipedia.org/wiki/JPEG_XR)
- - [`psd`](https://en.wikipedia.org/wiki/Adobe_Photoshop#File_format)
- - [`zip`](https://en.wikipedia.org/wiki/Zip_(file_format))
- - [`tar`](https://en.wikipedia.org/wiki/Tar_(computing)#File_format)
- - [`rar`](https://en.wikipedia.org/wiki/RAR_(file_format))
- - [`gz`](https://en.wikipedia.org/wiki/Gzip)
- - [`bz2`](https://en.wikipedia.org/wiki/Bzip2)
- - [`7z`](https://en.wikipedia.org/wiki/7z)
- - [`dmg`](https://en.wikipedia.org/wiki/Apple_Disk_Image)
- - [`mp4`](https://en.wikipedia.org/wiki/MPEG-4_Part_14#Filename_extensions)
- - [`m4v`](https://en.wikipedia.org/wiki/M4V)
- - [`mid`](https://en.wikipedia.org/wiki/MIDI)
- - [`mkv`](https://en.wikipedia.org/wiki/Matroska)
- - [`webm`](https://en.wikipedia.org/wiki/WebM)
- - [`mov`](https://en.wikipedia.org/wiki/QuickTime_File_Format)
- - [`avi`](https://en.wikipedia.org/wiki/Audio_Video_Interleave)
- - [`wmv`](https://en.wikipedia.org/wiki/Windows_Media_Video)
- - [`mpg`](https://en.wikipedia.org/wiki/MPEG-1)
- - [`mp3`](https://en.wikipedia.org/wiki/MP3)
- - [`m4a`](https://en.wikipedia.org/wiki/MPEG-4_Part_14#.MP4_versus_.M4A)
- - [`ogg`](https://en.wikipedia.org/wiki/Ogg)
- - [`opus`](https://en.wikipedia.org/wiki/Opus_(audio_format))
- - [`flac`](https://en.wikipedia.org/wiki/FLAC)
- - [`wav`](https://en.wikipedia.org/wiki/WAV)
- - [`amr`](https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_audio_codec)
- - [`pdf`](https://en.wikipedia.org/wiki/Portable_Document_Format)
- - [`epub`](https://en.wikipedia.org/wiki/EPUB)
- - [`exe`](https://en.wikipedia.org/wiki/.exe)
- - [`swf`](https://en.wikipedia.org/wiki/SWF)
- - [`rtf`](https://en.wikipedia.org/wiki/Rich_Text_Format)
- - [`woff`](https://en.wikipedia.org/wiki/Web_Open_Font_Format)
- - [`woff2`](https://en.wikipedia.org/wiki/Web_Open_Font_Format)
- - [`eot`](https://en.wikipedia.org/wiki/Embedded_OpenType)
- - [`ttf`](https://en.wikipedia.org/wiki/TrueType)
- - [`otf`](https://en.wikipedia.org/wiki/OpenType)
- - [`ico`](https://en.wikipedia.org/wiki/ICO_(file_format))
- - [`flv`](https://en.wikipedia.org/wiki/Flash_Video)
- - [`ps`](https://en.wikipedia.org/wiki/Postscript)
- - [`xz`](https://en.wikipedia.org/wiki/Xz)
- - [`sqlite`](https://www.sqlite.org/fileformat2.html)
- - [`nes`](http://fileinfo.com/extension/nes)
- - [`crx`](https://developer.chrome.com/extensions/crx)
- - [`xpi`](https://en.wikipedia.org/wiki/XPInstall)
- - [`cab`](https://en.wikipedia.org/wiki/Cabinet_(file_format))
- - [`deb`](https://en.wikipedia.org/wiki/Deb_(file_format))
- - [`ar`](https://en.wikipedia.org/wiki/Ar_(Unix))
- - [`rpm`](http://fileinfo.com/extension/rpm)
- - [`Z`](http://fileinfo.com/extension/z)
- - [`lz`](https://en.wikipedia.org/wiki/Lzip)
- - [`msi`](https://en.wikipedia.org/wiki/Windows_Installer)
- - [`mxf`](https://en.wikipedia.org/wiki/Material_Exchange_Format)
- - [`mts`](https://en.wikipedia.org/wiki/.m2ts)
- - [`wasm`](https://en.wikipedia.org/wiki/WebAssembly)
- - [`blend`](https://wiki.blender.org/index.php/Dev:Source/Architecture/File_Format)
- - [`bpg`](https://bellard.org/bpg/)
- - [`docx`](https://en.wikipedia.org/wiki/Office_Open_XML)
- - [`pptx`](https://en.wikipedia.org/wiki/Office_Open_XML)
- - [`xlsx`](https://en.wikipedia.org/wiki/Office_Open_XML)
-
- *SVG isn't included as it requires the whole file to be read, but you can get it [here](https://github.com/sindresorhus/is-svg).*
-
- *Pull request welcome for additional commonly used file types.*
-
-
- ## Related
-
- - [file-type-cli](https://github.com/sindresorhus/file-type-cli) - CLI for this module
-
-
- ## Created by
-
- - [Sindre Sorhus](https://github.com/sindresorhus)
- - [Mikael Finstad](https://github.com/mifi)
-
-
- ## License
-
- MIT
|