Опция PHP FILEINFO_MIME возвращает пустую строку - PullRequest
2 голосов
/ 21 апреля 2009

Я пытаюсь проверить тип MIME загруженного файла в моем приложении PHP. Я загружаю файл, затем делаю это, где $ file - путь к моему файлу:

$finfo = new finfo(FILEINFO_MIME);
$mimetype = $finfo->file($file);

В этой ситуации $ mimetype всегда является пустой строкой. Я протестировал несколько типов файлов (.jpg, .doc, .txt, .pdf), и он всегда пуст. Он должен возвращать что-то вроде «image / jpeg».

Я отлаживал и изменил первую строку, чтобы фрагмент кода теперь был таким:

$finfo = new finfo(FILEINFO_NONE);
$info = $finfo->file($file);

В этой ситуации, когда я загрузил jpg, $ info была такой: данные изображения JPEG, стандарт JFIF 1.02. Так что теперь я знаю, что он попадает в файл правильно, но передача FILEINFO_MIME не возвращает мне правильную строку mime.

Это происходит только на моем промежуточном сервере. На моем локальном сервере я получаю правильный тип пантомимы. У кого-нибудь есть идеи, почему мой промежуточный сервер возвращает пустую строку для типа mime?

Ответы [ 3 ]

1 голос
/ 21 апреля 2009

Мне интересно, правильно ли расположен магический файл на вашем сервере.

magic_file
Имя магического файла базы данных, обычно что-то вроде /path/to/magic.mime. Если не указан, используется переменная среды MAGIC. Если эта переменная также не задана, по умолчанию используется / usr / share / misc / magic. При необходимости добавляется суффикс .mime и / или .mgc.

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

$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic");
0 голосов
/ 10 мая 2012

Вы пробовали пример из руководства :

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension

   echo finfo_file($finfo, $filename) . "\n";

finfo_close($finfo);
?>
0 голосов
/ 21 апреля 2009

Попробуйте это:

<?php
$fi = new finfo(FILEINFO_MIME,'/usr/share/file/magic');
$mime_type = $fi->buffer(file_get_contents($file));
?>
...