Как мне найти mime-тип файла с php? - PullRequest
48 голосов
/ 25 сентября 2008

Хорошо, у меня есть файл index.php, который должен обрабатывать много разных типов файлов. как мне угадать тип файла на основе REQUEST_URI.

Если я запрашиваю http://site/image.jpg, и все запросы перенаправляются через index.php, который выглядит следующим образом

<?php
   include('/www/site'.$_SERVER['REQUEST_URI']);
?>

Как бы мне заставить это работать правильно?

Должен ли я проводить тестирование на основе расширения запрашиваемого файла или есть способ получить тип файла?

Ответы [ 13 ]

0 голосов
/ 12 сентября 2012

я получил очень хорошие результаты, используя функцию пользователя из http://php.net/manual/de/function.mime-content-type.php @ '' Джон Дот Ховард в prismmg dot com 26-Oct-2009 03:43 ''

function get_mime_type($filename, $mimePath = '../etc') { ...

, которая не использует finfo, exec или устаревшую функцию

хорошо работает и с удаленными ресурсами!

0 голосов
/ 25 сентября 2008

если вы имеете дело только с изображениями, вы можете использовать функцию [getimagesize()][1], которая содержит все виды информации об изображении, включая тип.

Более общий подход заключается в использовании расширения FileInfo из PECL. Документацию PHP для этого расширения можно найти по адресу: http://us.php.net/manual/en/ref.fileinfo.php

У некоторых людей есть серьезные жалобы по поводу этого расширения ... поэтому, если у вас возникли серьезные проблемы или вы по какой-то причине не можете установить расширение, вы можете проверить устаревшую функцию mime_content_type()

0 голосов
/ 25 сентября 2008

Я не использовал его, но есть расширение PECL для получения mimetype файла. Официальная документация для него находится в руководстве .

В зависимости от ваших целей, расширение файла может быть в порядке, но оно не невероятно надежно, поскольку его так легко изменить.

...