Вопрос

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

Я осведомлен о том, что mime_content_type() метод и расширение Fileinfo, однако mime_content_type() ненадежен и устарел, а Fileinfo не поставляется в "стандартной" установке PHP (5.2).

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

Это было полезно?

Решение

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

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

Другие советы

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

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

file -bi <filepath>

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top