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