Получить MIME-тип локального файла в PHP5 без расширения PECL?
Вопрос
mime_content_type()
не рекомендуется.
Как я могу найти MIME type
локального файла, используя PHP5
но без использования этого устаревшего метода или PECL fileinfo
расширение?
Редактировать:Вот чего я боялся.К сожалению, они отказались от встроенной функции в пользу той, которая требует расширения, которое не всегда доступно.
Решение
Если вы не можете использовать расширение fileinfo и не хотите использовать mime_content_type, ваши возможности ограничены.
Скорее всего, вам придется выполнить поиск по расширению файла.mime_content_type сделал что-то более умное и фактически искал в файле специальные данные, чтобы определить тип mime.
Другие советы
А получитьID3() Библиотека — это быстрый и простой вариант, который работает большую часть времени.Первоначально названная в честь проекта по получению данных MP3 ID3, библиотека делает намного больше и весьма удобна для всех видов обычных или нестандартных задач с метаданными файлов.
Я использовал его для получения файлов типов MIME для онлайн-инструментов обработки изображений и видео.За все проведенные мной тесты я не видел, чтобы getID3 неправильно определил тип MIME.
Я также использовал его, чтобы проверить, есть ли в видео QuickTime подсказки по потоковой передаче.Я упоминаю об этом как о примере универсальности.
Второй, более трудоемкий вариант — запустить собственную программу проверки типов MIME, как уже предлагалось.Если у вас есть волшебный файл MIME, вы можете пойти немного дальше, чем просто поиск по расширению файла, сравнив первые n байтов данных файла с таблицей поиска первых n байтов по типу MIME, полученной из вашего волшебного файла MIME.
Типичный магический файл MIME будет содержать более 500 наборов типов MIME, что может привести к медленному сравнению (нужно выполнить множество проверок).В этом поможет жесткое кодирование 10 наиболее распространенных проверок типов MIME в вашем домашнем комплексном решении.