Определение типа файла

Тема в разделе "PHP программирование", создана пользователем MiXOH, 11 янв 2010.

  1. MiXOH

    MiXOH Гость

    Приветствую уважаемые форумчане!

    Мне необходимо при загрузке файла на сервер определить его тип, чтобы ограничить загрузку только файлов определенного типа.
    Значение, хранимое в переменной $_FILES["..."]["type"] не подходит, т.к. оно определяет тип файла по расширению или как-то так, но не определяет реальный тип файла.

    Пробовал использовать функцию mime_content_type, но выдает ошибку Warning: mime_content_type() [http://www.php.net/mime_magic]: mime_magic not initialized in ...
    Почему не могу понять, вроде все установлено.

    Может, кто поможет разобраться, почему не работает функция mime_content_type либо подскажет какой-нибудь еще способ определить тип файла.

    Заранее спасибо.
     
  2. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Почему не работает - хз. Если путь к конфигу mime прописан верно, и библиотека подключена - должно работать.
    Ну а альтернативный путь - это сравнивать заголовок файла с сигнатурами(что и делает эта ф-я) самостоятельно. т.е. читать первые N байт из файла и сравнивать с нужной(или не нужной) для тебя сигнатурой.. Сигнатуры файлов можно найти ТУТ
     
  3. MiXOH

    MiXOH Гость

    Спасибо за альтернативный путь, если не разберусь, почему не работает, придется наверно им воспользоваться.

    Пути прописаны правильно. При установке РНР модули необходимые для функционирования mime_content_type не были установлены. Я их добавлял позднее, может быть в этом дело, чего-то не хватает.
    В мануале прочитал, что вроде бы нужен PECL для работы этой функции. Так ли это?
     
  4. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    Да, верно.
    Вобщем, вот примерчик. Должно помочь)
    Код (PHP):
    <?php
    $filename="файл";
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    echo finfo_file($finfo, $filename) . "\n";
    }
    finfo_close($finfo);
    ?>
    Думай=)
     
Загрузка...

Поделиться этой страницей