Определение типа MIME в PHP
-
19-08-2019 - |
Вопрос
Я ищу наилучший (возможный для большинства установок PHP 5.2 и все еще активно разрабатываемый) способ определения MIME-типа файлов в PHP.
Я осведомлен о том, что mime_content_type()
метод и расширение Fileinfo, однако mime_content_type()
ненадежен и устарел, а Fileinfo не поставляется в "стандартной" установке PHP (5.2).
Есть ли у меня какие-либо другие варианты?
Решение
Вы смотрели в этот пакет PEAR?
Другие советы
(лол, извините, я понял, что об этом спросили несколько месяцев назад, когда я заканчивал. да ладно. мог бы добавить это ...)
Если это сервер * nix, вы можете использовать команду file . Р>
file -bi <filepath>
Вы должны будете использовать " exec " в PHP, что я думаю? Я новичок в PHP, поэтому не цитируйте меня, но ...
$content_type = exec("file -bi " . escapeshellarg($filepath));
Я не тестировал его, поэтому вам может понадобиться экранировать строку пути и отформатировать вывод.
Не знаю, будет ли это надежнее других методов.
Вы можете выполнить подзапрос к веб-серверу, на котором вы работаете, а затем проанализировать заголовок, чтобы получить тип mime таким образом. Поскольку это медленно, используйте curl, чтобы получить только заголовки, а не полный запрос. Это важно, если вы смотрите на большие файлы. Р>
Если вы используете Apache и используете php в качестве модуля, взгляните на функцию VIRTUAL. это более быстрый способ выполнить подзапрос, чем использование curl.
В противном случае вы можете искать тип MIME по расширению. Это заставит работать все хорошо названные файлы. Р>