Я пытаюсь определить тип mime файла. Я пробовал несколько методов, но не придумал ничего, что дает постоянный результат. Я пробовал $mime = mime_content_type($file)
и $mime = exec('file -bi ' . $file)
. Я обслуживаю изображения, CSS и JavaScript.
Пример mime_content_type()
:
Пример exec(...)
output:
Как можно видеть здесь, результаты повсюду.
Моя версия PHP – 5.2.6
РЕШЕНИЕ (спасибо Иакову)
$mimetypes = array( 'gif' => 'image/gif', 'png' => 'image/png', 'jpg' => 'image/jpg', 'css' => 'text/css', 'js' => 'text/javascript', ); $path_parts = pathinfo($file); if (array_key_exists($path_parts['extension'], $mimetypes)) { $mime = $mimetypes[$path_parts['extension']]; } else { $mime = 'application/octet-stream'; }
Расширение Fileinfo
выполнит задание, если вы находитесь на> = 5.30
mime_content_type
устарел в PHP 5.30 Если, к сожалению, вы находитесь на <5.30, то я, вероятно, просто напишу сам, это намного надежнее, чем то, что вы получаете от вышеперечисленных функций / команд.
Вот пример:
<?php $filename = 'FILENAME HERE'; $mimetypes = array('png' => 'image/png', 'jpg' => 'image/jpg', 'css' => 'text/css', 'js' => 'application/x-javascript' // any other extensions that you may be serving ); $ext = strtolower(substr($filename, strrpos($filename, '.') + 1, strlen($filename))); if(array_key_exists($ext, $mimetypes)) { $mime = $mimetypes[$ext]; } else { echo 'mime type not found'; } ?>