Проверка файла по mime-type при загрузке из формы

idallas

Новичок
Столкнулся с такой проблемой: при обычной передаче файлов из формы POSTом в скрипт одной из проверок сравниваю mime-тип, по условиям из вне можно пропускать только pdf, код следующий:

Код:
if($_FILES['uploadfile']['type']=='application/pdf'){
поехали...
}
что интересно попался один файл, в формате pdf, который при загрузке, причем только с определенного компьютера, выдавал Mime: application/x-force-download (браузер FireFox).

В связи с этим вопрос - почему так происходит и с одного компьютера сервер дает один mime-тип, а с другого другой? И что это за mime у файла такой? До этого сталкивался с подобным только при отдаче файла а не при его загрузке.
 

billyrubin

Новичок
Цитата: «$_FILES['userfile']['type'] Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif". Этот mime-тип не проверяется в PHP, так что не полагайтесь на его значение без проверки.»

То есть, получается, это браузер такую информацию предоставил. В любом случае, лучше вручную проверить тип:

PHP:
$finfo = new finfo;
$type = $finfo->file($filename, FILEINFO_MIME_TYPE);
 

idallas

Новичок
Да, я тоже сначала на браузер грешил, но вот почему же тогда с другого компьютера, из такого же браузера (Firefox 26) mime-тип приходит другой - непонятно.
P.s. finfo - хорошо, но доступа к настройкам php (установлено 5.1) у меня, к сожалению, нет.
 

idallas

Новичок
Ок. Спасибо! Сегодня доступа к проблемному компьютеру нет, а завтра обязательно попробую.
 

idallas

Новичок
Проблема решена. Повоевал с хостингом: добился версии php 5.4.13 с поддержкой fileinfo, переписал проверку - проблема самоустранилась.
billyrubin - спасибо!
 
Сверху