Получить MIME-тип локального файла в PHP5 без расширения PECL? - PullRequest
0 голосов
/ 09 сентября 2008

mime_content_type() устарело.

Как найти MIME type локального файла, используя PHP5, но не используя этот устаревший метод или расширение PECL fileinfo?

Редактировать: Это то, чего я боялся. К сожалению, они отказались от встроенной функции в пользу той, которая требует расширения, которое не всегда доступно.

Ответы [ 2 ]

1 голос
/ 09 сентября 2008

Если вы не можете использовать расширение fileinfo и не хотите использовать mime_content_type, ваши параметры ограничены.

Скорее всего, вам нужно будет выполнить поиск на основе расширения файла. mime_content_type сделал что-то более разумное и фактически искал специальные данные в файле, чтобы определить тип mime.

0 голосов
/ 09 сентября 2008

Библиотека getID3 () - это быстрый и простой вариант работы в большинстве случаев. Первоначально названная для проекта по получению данных MP3 ID3, библиотека выполняет на два шага больше, чем это, и очень удобна для всех видов общих или нечетных задач метаданных файлов.

Я использовал его, чтобы получить MIME-типы файлов для онлайн-инструментов для изображений и видео. Во всех проведенных мною тестах я не видел, чтобы getID3 неправильно указывал тип MIME.

Я также использовал это, чтобы проверить, есть ли у видео QuickTime подсказки потоковой передачи. Я упоминаю это как пример универсальности.

Второй, более трудоемкий, вариант - запустить собственную проверку типов MIME, как уже предлагалось. Если у вас есть магический файл MIME, вы можете пойти немного дальше, чем поиск по расширению файла, сравнив первые n байтов данных файла с первыми n байтами, с таблицей поиска типа MIME, полученной из вашего магического файла MIME.

Типичный магический файл MIME будет содержать более 500 наборов типов MIME, что может привести к медленным сравнениям (множество проверок, которые нужно сделать). В этом вам поможет жесткое кодирование 10 наиболее распространенных проверок типов MIME в вашем домашнем решении.

...