Как я могу определить MIME-тип с помощью PHP, если фактический файл не существует? - PullRequest
0 голосов
/ 28 января 2011

Есть ли способ обнаружить тип MIME-файла без фактического наличия файла, например, когда вы генерируете файл и используете его для загрузки?

В настоящее время я использую расширение файла отсюда: http://www.php.net/manual/en/function.mime-content-type.php#87856

Мне просто интересно, есть ли другой способ, кроме создания файла на сервере и использования FileInfo, mime_content_type () или file

Ответы [ 4 ]

2 голосов
/ 28 января 2011

Попробуйте функцию Fileinfo finfo_buffer():

$filename = 'image.jpg';
$contents = file_get_contents($filename);

$finfo = finfo_open(FILEINFO_MIME_TYPE);
var_dump( finfo_buffer($finfo, $contents) ); // string(10) "image/jpeg"

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

0 голосов
/ 28 января 2011

Возможно, вы захотите передать это так:

 $type = `echo $FILE_CONTENTS | file -bi -`

ЧИТАЙТЕ: Это плохая идея.Не делайте этого.«Инъекция из командной строки» (спасибо Эндрю Муру за указание на это.)

0 голосов
/ 28 января 2011

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

0 голосов
/ 28 января 2011

Если вы знаете тип создаваемого вами файла, просто обратитесь к массиву известных типов MIME и примените его соответствующим образом.

...