Иногда get_header возвращает неверные значения, потому что он читает заголовки HTTP, но не файл. Лучше использовать finfo:
$finfo = new finfo(FILEINFO_MIME_TYPE); $type = $finfo->buffer(file_get_contents($link));