Как получить тип mime в PHP

Я пишу скрипт, и мне нужно правильно (я думаю, что некоторые типы mime могут отличаться от их расширений) получают типы mime-файлов (файлы могут быть любого типа).

Используемая веб-хостинг-компания не имеет mime_content_type() и все еще (не знаю, в каком году они будут ее исправлять), обещая исправить альтернативу PECL.

Каким другим способом я могу это сделать (и у меня нет доступа к командам оболочки)?

Вы можете попробовать finfo_file – он возвращает тип mime.

http://php.net/manual/en/book.fileinfo.php

Я использую следующую функцию, которая является оберткой для 3 наиболее распространенных методов:

 function Mime($path, $magic = null) { $path = realpath($path); if ($path !== false) { if (function_exists('finfo_open') === true) { $finfo = finfo_open(FILEINFO_MIME_TYPE, $magic); if (is_resource($finfo) === true) { $result = finfo_file($finfo, $path); } finfo_close($finfo); } else if (function_exists('mime_content_type') === true) { $result = mime_content_type($path); } else if (function_exists('exif_imagetype') === true) { $result = image_type_to_mime_type(exif_imagetype($path)); } return preg_replace('~^(.+);.+$~', '$1', $result); } return false; } 

$ _FILES ['file'] ['type'] поступает из браузера, который загружает файл, чтобы вы не могли полностью полагаться на это значение.

Проверьте файл finfo_file для идентификации типов файлов на основе содержимого файла. Расширение файла также ненадежно, так как пользователь может загружать вредоносный код с расширением mp3.