2009-03-16 5 views
6

Я ищу лучшее (возможно, на большинстве PHP 5.2 установки и до сих пор активно развивается) способ обнаружения файлов MIME-типа в PHP.Обнаружение типа MIME в PHP

Я знаю метод mime_content_type() и расширение Fileinfo, однако mime_content_type() является ненадежным и устаревшим, а Fileinfo не входит в стандартную установку PHP (5.2).

Есть ли у меня другие возможности?

ответ

5

Вы заглянули в этот пакет PEAR?

http://pear.php.net/package/MIME_Type

+0

Спасибо. Это не идеальный вариант, поскольку все, что он действительно делает, это попытаться использовать два метода, которые я уже упомянул, другой, которые не будут работать на всех системах (то есть Windows), а затем возвращаются к обнаружению по расширению, но это выглядит как мой лучший вариант в настоящее время. –

0

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

Если вы используете Apache и используете php в качестве модуля, посмотрите на функцию VIRTUAL. это более быстрый способ сделать подзапрос, чем использование curl.

В противном случае вы можете найти тип mime по расширению. Это заставит все хорошо названные файлы работать.

11

(лол жаль, что я понял, это был задан вопрос месяцев назад, когда я заканчивал. Ну хорошо. Могли бы также добавить это ...)

Если это сервер * Nix вы можете использовать файл команды.

file -bi <filepath> 

Вам нужно будет использовать «exec» в PHP, чтобы сделать это, я думаю? Я новичок в PHP, так что не цитируйте меня на это, но ...

$content_type = exec("file -bi " . escapeshellarg($filepath)); 

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

Dunno, если это будет более надежным, чем другие методы.

+2

Я использую файл -b -mime-type $ filename, но хороший ответ! – icco

+0

спасибо спасибо спасибо !!!! – Kama

Смежные вопросы