public function __construct() { Validator::extend('skinmimes', function ($attribute, $value, $parameters) { $allowed = array('audio/mpeg', 'image/jpeg', 'application/ogg', 'audio/wave', 'audio/aiff', 'image/png', 'text/plain'); $mime = new MimeReader($value->getRealPath()); return in_array($mime->get_type(), $allowed); }); }
/** * @name validateFile Comprueba un ARCHIVO que este en el DISCO * Si quieres comprobar archivos subidos puedes utilizar "validateUploadedFile" para agilizar la carga * @param string $file Path to file to validate * @param string/array $type Especifica el/los tipos de ficheros que se aceptan */ public function validateFile($file, $type = '', $testExtensions = true) { $mime = new MimeReader($file); return $this->validate($file, $mime->get_type(), $type, $testExtensions); }
/** * Returns the mime type of a file * * @param string $file * @return mixed */ public static function mime($file) { // stop for invalid files if (!file_exists($file)) { return null; } // Fileinfo is prefered if available if (function_exists('finfo_file')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file); finfo_close($finfo); return $mime; } // for older versions with mime_content_type go for that. if (function_exists('mime_content_type') && ($mime = @mime_content_type($file) !== false)) { return $mime; } // shell check try { $mime = system::execute('file', [$file, '-z', '-b', '--mime'], 'output'); $mime = trim(str::split($mime, ';')[0]); if (f::mimeToExtension($mime)) { return $mime; } } catch (Exception $e) { // no mime type detectable with shell $mime = null; } // Mime Sniffing $reader = new MimeReader($file); $mime = $reader->get_type(); if (!empty($mime) && f::mimeToExtension($mime)) { return $mime; } // guess the matching mime type by extension return f::extensionToMime(f::extension($file)); }
<?php include '../mimereader.class.php'; $files = array('./image.jpg', './image.png', './image.gif', './image.bmp', './Test.pdf'); echo '<table>'; foreach ($files as $file) { $fp = fopen($file, 'r'); $buffer = fread($fp, 16); fclose($fp); echo '<tr><td>' . $file . '</td><td>'; $type = '<b>UNKNOWN</b>'; $reader = new MimeReader($file); echo $reader->get_type() . '</td></tr>'; } echo '</table>';