Обнаружение MIME-типа в PHP - PullRequest
6 голосов
/ 16 марта 2009

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

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

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

Ответы [ 4 ]

11 голосов
/ 05 января 2010

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

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

file -bi <filepath>

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

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

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

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

5 голосов
/ 16 марта 2009

Вы смотрели в этот пакет PEAR?

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

0 голосов
/ 05 марта 2012
0 голосов
/ 17 марта 2009

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

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

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

...