Description
Files type detector based on file name extension or file content (binary content).
FileTypeDetector alternatives and similar libraries
Based on the "Files" category.
Alternatively, view FileTypeDetector alternatives based on common mentions on social networks and blogs.
-
Gaufrette
PHP library that provides a filesystem abstraction layer − will be a feast for your files! -
UnifiedArchive
UnifiedArchive - an archive manager with unified interface for different formats (bundled with cli utility). Supports all formats with basic operations (reading, extracting and creation) and popular formats specific features (compression level, password-protection, comment) -
Filesystem Component
Filesystem Package provide a fluent, object-oriented interface for working with filesystem.
Cloudways' Black Friday Offer - 1st Choice of Developers
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of FileTypeDetector or a related project?
README
FileTypeDetector
Files type detector based on file name extension or file content (binary content).
- Usage
- Installation
- Supported formats
Usage
File Type detection
- 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::AUDIO
and so on)[1]
- Format of file (Detector::MP3
and 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'));
Mimetype generation
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'));
Installation
Install package via composer:
composer require wapmorgan/file-type-detector
Supported formats
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) |
*Note that all licence references and agreements mentioned in the FileTypeDetector README section above
are relevant to that project's source code only.