Files type detector based on file name extension or file content (binary content).
- Usage
- Installation
- Supported formats
- Detection by file name: Detector::detectByFilename(...filename...): array|boolean
- Detection by file content or stream content: Detector::detectByContent(...filename/resource...): array|boolean
Both functions will return an array with following elements in case of success:
- [0]- Type of file (- Detector::AUDIOand so on)
- [1]- Format of file (- Detector::MP3and so on)
- [2]- Mime type of file (- 'audio/mpeg'for example)
In case of failure it will return false.
Example:
$type = wapmorgan\FileTypeDetector\Detector::detectByFilename($filename);
// or
$type = wapmorgan\FileTypeDetector\Detector::detectByContent('file-without-extension');
// or
$type = wapmorgan\FileTypeDetector\Detector::detectByContent(fopen('http://somedomain/somepath', 'r'));To get correct mimetype for file only there is getMimeType($file) function.
$mime = wapmorgan\FileTypeDetector\Detector::getMimeType($file);
// or
$mime = wapmorgan\FileTypeDetector\Detector::getMimeType(fopen('somefile', 'r'));Install package via composer:
composer require wapmorgan/file-type-detector
Available to use types and their formats.
| Application | Archive | Audio | Database | Disk_image | Document | Feed | Font | Image | Presentation | Scenario | Spreadsheet | Video | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| apk | 7z | aac | accdb | iso | doc | atom | otf | bmp | odp | reg | csv | 3gp | 
| com | arc | amr | mdb | nrg | docx | rss | ttf | gif | ppt | ods | asf | |
| exe | arj | flac | odb | vhd | html | ico | pptx | tsv | avi | |||
| xap | bzip2 | m3u | sqlite | json | jpeg | xls | flv | |||||
| cab | midi | markdown | png | xlsx | m4v | |||||||
| dar | mp3 | odt | psd | mkv | ||||||||
| gzip | ogg | tiff | mov | |||||||||
| jar | wav | rtf | mp4 | |||||||||
| lzma2 | wma | txt | mpeg | |||||||||
| rar | xml | swf | ||||||||||
| tar | yaml | vob | ||||||||||
| zip | webm | |||||||||||
| wmv | 
Formats support status.
| Format | Extension | Detection by content | MimeType | Signature | 
|---|---|---|---|---|
| 3gp | 3gp | + | video/3gpp | at [0]: (0x0001466747970336770) | 
| 7z | 7z | + | application/x-7z-compressed | at [0]: (0x377abcaf271c) | 
| Aac | aac | + | audio/x-aac | at [0]: (0xfff1) / at [0]: (0xfff9) | 
| Accdb | accdb | + | application/x-msaccess | at [0]: (0x01005374616e6461726420414345204442) | 
| Amr | amr | + | audio/amr | at [0]: (0x2321414d52) | 
| Apk | apk | + | application/vnd.android.package-archive | at [0]: (0x504b34) & at [30]: ('AndroidManifest.xml') | 
| Arc | arc | + | application/x-freearc | at [0]: (0x4172431) | 
| Arj | arj | + | application/arj | at [0]: (0x60ea) | 
| Asf | asf | - | - | |
| Atom | atom | + | application/atom+xml | at [0]: ('<?xml') & at [10]: (fuzzy search 'Atom') | 
| Avi | avi | + | video/x-msvideo | at [0]: (0x52494646) & at [8]: (0x415649204c495354) | 
| Bmp | bmp | + | image/bmp | at [0]: (0x424d) | 
| Bzip2 | bz2 | + | application/x-bzip2 | at [0]: (0x425a68) | 
| Cab | cab | + | application/vnd.ms-cab-compressed | at [0]: (0x4d534346) | 
| Com | com | - | application/x-msdownload | |
| Csv | csv | - | text/csv | |
| Dar | dar | + | application/x-dar | at [0]: (0x0007b) | 
| Doc | doc | + | application/msword | at [0]: (0xd0cf11e0a1b11ae1) & at [512]: (0xeca5c10) | 
| Docx | docx | + | application/vnd.openxmlformats-officedocument.wordprocessingml.document | at [0]: (0x504b3414060) & at [-22]: (fuzzy search 'word/') | 
| Exe | exe | + | application/x-msdownload | at [0]: (0x4d5a) | 
| Flac | flac | + | audio/x-flac | at [0]: (0x664c614300022) | 
| Flv | flv | + | video/x-flv | at [0]: (0x464c561) | 
| Gif | gif | + | image/gif | at [0]: (0x474946383761) / at [0]: (0x474946383961) | 
| Gzip | gz | + | application/gzip | at [0]: (0x1f8b) | 
| Html | html | + | text/html | at [0]: ('<html') | 
| Ico | ico | + | image/x-icon | at [0]: (0x0010) | 
| Iso | iso | + | application/x-iso9660-image | at [0]: (0x4344303031) | 
| Jar | jar | + | application/java-archive | at [0]: (0x504b341408080) / at [0]: (0x5f27a889) | 
| Jpeg | jpeg | + | image/jpeg | at [0]: (0xffd8ffe0) | 
| Json | json | - | application/json | |
| Lzma2 | xz | - | application/x-xz | |
| M3u | m3u | + | audio/x-mpegurl | at [0]: ('#EXTM3U') | 
| M4v | m4v | + | video/x-m4v | at [0]: (0x00018667479706d703432) | 
| Markdown | md | - | text/markdown | |
| Mdb | mdb | + | application/x-msaccess | at [0]: (0x01005374616e64617264204a6574204442) | 
| Midi | midi | + | audio/midi | at [0]: (0x4d546864) | 
| Mkv | mkv | + | video/x-matroska | at [0]: (0x1a45dfa3934282886d6174726f736b61) | 
| Mov | mov | + | video/quicktime | at [4]: (0x6674797071742020) / at [4]: (0x6d6f6f76) | 
| Mp3 | mp3 | + | audio/mpeg | at [0]: (0x494433) | 
| Mp4 | mp4 | + | video/mp4 | at [4]: (0x6674797069736f6d) / at [4]: (0x6674797033677035) / at [4]: (0x667479704d534e56) / at [4]: (0x667479704d344120) | 
| Mpeg | mpeg | + | video/mpeg | at [0]: (0x001) & at [-4]: (0x001b7) | 
| Nrg | nrg | + | - | at [-8]: ('NERO') / at [-12]: ('NER5') | 
| Odb | odb | + | application/vnd.oasis.opendocument.database | at [0]: (0x504b34) & at [30]: ('mimetypeapplication/vnd.oasis.opendocument.') & at [73]: ('base') | 
| Odp | odp | + | application/vnd.oasis.opendocument.presentation | at [0]: (0x504b34) & at [30]: ('mimetypeapplication/vnd.oasis.opendocument.') & at [73]: ('presentation') | 
| Ods | ods | + | application/vnd.oasis.opendocument.spreadsheet | at [0]: (0x504b34) & at [30]: ('mimetypeapplication/vnd.oasis.opendocument.') & at [73]: ('spreadsheet') | 
| Odt | odt | + | application/vnd.oasis.opendocument.text | at [0]: (0x504b34) & at [30]: ('mimetypeapplication/vnd.oasis.opendocument.') & at [73]: ('text') | 
| Ogg | ogg | + | audio/ogg | at [0]: ('OggS') | 
| Otf | otf | + | application/x-font-otf | at [0]: (0x4f54544f) | 
| + | application/pdf | at [0]: (0x25504446) | ||
| Png | png | + | image/png | at [0]: (0x89504e47da1aa) | 
| Ppt | ppt | + | application/vnd.ms-powerpoint | at [0]: (0xd0cf11e0a1b11ae1) & at [512]: (0xa0461df0) / at [0]: (0xd0cf11e0a1b11ae1) & at [512]: (0x06e1ef0) / at [0]: (0xd0cf11e0a1b11ae1) & at [512]: (0xf0e83) | 
| Pptx | pptx | + | application/vnd.openxmlformats-officedocument.presentationml.presentation | at [0]: (0x504b3414060) & at [-22]: (fuzzy search 'ppt/') | 
| Psd | psd | + | image/vnd.adobe.photoshop | at [0]: (0x38425053) | 
| Rar | rar | + | application/x-rar-compressed | at [0]: (0x526172211a70) / at [0]: (0x526172211a710) | 
| Reg | reg | + | text/plain | at [0]: (0xfffe) / at [0]: (0x52454745444954) | 
| Rss | rss | + | application/rss+xml | at [0]: ('<?xml') & at [10]: (fuzzy search '<rss') | 
| Rtf | rtf | + | application/rtf | at [0]: (0x7b5c72746631) | 
| Swf | swf | + | application/x-shockwave-flash | at [0]: (0x5a5753) | 
| Tar | tar | + | application/x-tar | at [0]: (0x757374617203030) / at [0]: (0x757374617220200) | 
| Tiff | tiff | + | image/tiff | at [0]: (0x492049) / at [0]: (0x49492a0) / at [0]: (0x4d4d02a) / at [0]: (0x4d4d02b) | 
| Tsv | tsv | - | text/tab-separated-values | |
| Ttf | ttf | + | application/x-font-ttf | at [0]: (0x01000) | 
| Txt | txt | - | text/plain | |
| Vhd | vhd | - | - | |
| Vob | vob | + | video/x-ms-vob | at [0]: (0x001ba) & at [-4]: (0x001b9) | 
| Wav | wav | - | audio/x-wav | |
| Webm | webm | + | video/webm | at [0]: (0x1a45dfa3) | 
| Wma | wma | - | audio/x-ms-wma | |
| Wmv | wmv | - | video/x-ms-wmv | |
| Xap | xap | - | application/x-silverlight-app | |
| Xls | xls | + | application/vnd.ms-excel | at [0]: (0xd0cf11e0a1b11ae1) & at [512]: (0x981000650) | 
| Xlsx | xlsx | + | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | at [0]: (0x504b3414060) & at [-22]: (fuzzy search 'xl/') | 
| Xml | xml | + | application/xml | at [0]: ('<?xml') | 
| Yaml | yaml | - | text/yaml | |
| Zip | zip | + | application/zip | at [0]: (0x504b34) / at [0]: (0x504b56) / at [0]: (0x504b78) |