Определение типа MIME в PHP

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

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

Есть ли у меня другие варианты?


person Jack Sleight    schedule 16.03.2009    source источник


Ответы (4)


Вы изучали этот пакет PEAR?

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

person Jeremy DeGroot    schedule 16.03.2009
comment
Спасибо. Это не идеально, так как все, что он действительно делает, это пытается использовать два метода, которые я уже упоминал, другой, который не будет работать на всех системах (например, Windows), а затем возвращается к обнаружению по расширению, но это выглядит как мой лучший вариант на данный момент. - person Jack Sleight; 17.03.2009

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

Если это сервер *nix, вы можете использовать команду file.

file -bi <filepath>

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

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

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

Не знаю, будет ли это более надежным, чем другие методы.

person EMPraptor    schedule 05.01.2010

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

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

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

person Byron Whitlock    schedule 16.03.2009

Легко: http://www.php.net/manual/en/function.mime-content-type.php#107798

person Tim Swan    schedule 05.03.2012
comment
Он не устарел, хотя ранее был неправильно помечен как устаревший. Все еще существует в PHP 7 и не помечен как устаревший. - person dbenton; 31.05.2018