← MIME Download

/**----------------------------------------------------------------------------\ | Resolves a file's MIME type, first using it's file extension. Do not use for | | security purposes. | +------------------------------------------------------------------------------+ | Usage: | | echo mime('example.txt'); | | | | Result: | | text/plain | +---------+--------+-------+---------------------------------------------------+ | @param | string | $file | The path to a file. | | | | | | | @return | string | | The file's MIME type. | \---------+--------+-------+--------------------------------------------------*/ function mime($file){ static $mimes = [ 'ai' => 'application/postscript', 'asm' => 'text/x-asm', 'bat' => 'text/x-msdos-batch', 'bmp' => 'image/bmp', 'c' => 'text/x-c', 'cab' => 'application/vnd.ms-cab-compressed', 'cer' => 'application/pkix-cert', 'cpp' => 'text/x-c++', 'crl' => 'application/pkix-crl', 'crl' => 'application/x-pkcs7-crl', 'crt' => 'application/x-x509-ca-cert', 'crt' => 'application/x-x509-user-cert', 'csr' => 'application/pkcs10', 'css' => 'text/css', 'der' => 'application/x-x509-ca-cert', 'doc' => 'application/msword', 'docm' => 'application/vnd.ms-word.document.macroEnabled.12', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'dot' => 'application/msword', 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'eot' => 'application/vnd.ms-fontobject', 'eps' => 'application/postscript', 'exe' => 'application/x-msdownload', 'flv' => 'video/x-flv', 'gif' => 'image/gif', 'htm' => 'text/html', 'html' => 'text/html', 'ico' => 'image/vnd.microsoft.icon', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'js' => 'application/javascript', 'json' => 'application/json', 'key' => 'application/pkcs8', 'mov' => 'video/quicktime', 'mp3' => 'audio/mpeg', 'msi' => 'application/x-msdownload', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', 'odt' => 'application/vnd.oasis.opendocument.text', 'otf' => 'application/x-font-opentype', 'p10' => 'application/pkcs10', 'p12' => 'application/x-pkcs12', 'p7b' => 'application/x-pkcs7-certificates', 'p7c' => 'application/pkcs7-mime', 'p7r' => 'application/x-pkcs7-certreqresp', 'p8' => 'application/pkcs8', 'pdf' => 'application/pdf', 'pem' => 'application/x-pem-file', 'pfx' => 'application/x-pkcs12', 'php' => 'text/x-php', 'png' => 'image/png', 'pot' => 'application/vnd.ms-powerpoint', 'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12', 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', 'ppa' => 'application/vnd.ms-powerpoint', 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12', 'pps' => 'application/vnd.ms-powerpoint', 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'ppt' => 'application/vnd.ms-powerpoint', 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'ps' => 'application/postscript', 'psd' => 'image/vnd.adobe.photoshop', 'qt' => 'video/quicktime', 'rar' => 'application/x-rar-compressed', 'rtf' => 'application/rtf', 'sfnt' => 'application/font-sfnt', 'sh' => 'text/x-shellscript', 'spc' => 'application/x-pkcs7-certificates', 'sql' => 'application/sql', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', 'swf' => 'application/x-shockwave-flash', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'ttf' => 'application/x-font-truetype', 'ttf' => 'application/x-font-ttf', 'txt' => 'text/plain', 'url' => 'application/internet-shortcut', 'woff' => 'application/font-woff', 'woff2' => 'application/font-woff2', 'xla' => 'application/vnd.ms-excel', 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', 'xls' => 'application/vnd.ms-excel', 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xlt' => 'application/vnd.ms-excel', 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12', 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'xml' => 'application/xml', 'zip' => 'application/zip', ]; $ext = trim(mb_strtolower(pathinfo($file, PATHINFO_EXTENSION))); if(!empty($mimes[$ext])){ return $mimes[$ext]; }elseif(file_exists($file)){ $finfo = finfo_open(FILEINFO_MIME); $mime = finfo_file($finfo, $file); finfo_close($finfo); return explode(';', $mime)[0]; }else{ return 'application/octet-stream'; } }