fileinfo и типы mime, о которых я никогда не слышал - PullRequest
4 голосов
/ 27 февраля 2010

Я не чужд типам пантомимы, но это странно. Обычно текстовый файл считался бы текстовым / MIME, но теперь, после реализации fileinfo, этот тип файла теперь считается «text / x-pascal». Я немного обеспокоен, потому что мне нужно быть уверенным, что я установил правильные типы пантомимы, прежде чем разрешать пользователям загружать с ним.

Есть ли шпаргалка, которая даст мне все "общие" пантомимы, как они интерпретируются fileinfo?


Синан предоставил ссылку, в которой перечислены все наиболее распространенные пантомимы. Если вы посмотрите на этот список, вы увидите, что файл .txt имеет формат text / plain mime, но в моем случае текстовый файл plain jane интерпретируется как text / pascal.

Ответы [ 4 ]

4 голосов
/ 27 февраля 2010

fileinfo - «лучшая догадка». Он анализирует только часть файла, чтобы выяснить, к какому типу относится этот файл, и поэтому его можно легко обмануть. Возможно, ваш файл начинается с комментария или ключевого слова на Паскале, например Project или Unit.

3 голосов
/ 10 мая 2010

Я обнаружил, что, по крайней мере, начиная с версии 5.03, команда ' file ' может в некоторых случаях неправильно идентифицировать простой текстовый файл как исходный файл Pascal, просто потому, что он содержит слово ' программа "или" запись ". По крайней мере, так это выглядит, изучив источник (src / names.h). Я считаю, что команда php fileinfo использует тот же «магический» движок, поэтому я подозреваю, что это является причиной проблемы. Если / когда я буду принят в список рассылки, я сообщу сопровождающим об этой проблеме.

[UPDATE] Я задал вопрос, но получил мало ответов. Изучив эту проблему чуть более подробно, выясняется, что определить текстовые форматы, как правило, действительно сложно . Если вы получаете MIME-тип text / * обратно из файла, вы можете подумать о том, чтобы игнорировать результат и предполагать, что ресурс просто «text / plain», если только ложные отрицания (возможно, text / html) не вызовут у вас затруднений.

3 голосов
/ 27 февраля 2010

Fileinfo не использует расширение файла для определения типа mime, но ( цитирует ) :

Функции в этом модуле попытаться угадай тип контента и кодировку файла ищет наверняка Волшебные байтовые последовательности в определенных позиции в файле.

Идея состоит в том, что имя файла и его расширение предоставляются пользователями (особенно в таком случае, как ваш, когда файлы загружаются пользователями) , и, как таковые менее "уверены", чем содержимое самого файла.


Может быть, решение может заключаться в том, чтобы не проверять весь mime-тип, возвращаемый fileinfo, а использовать только первую его часть - по крайней мере, в некоторых случаях?

Например, может быть, вы могли бы принять все типы mimetype из семейств text/* и image/* и отказаться от всех, которые выглядят как application/*, кроме application/pdf?
(просто пример - но вы видите смысл)

2 голосов
/ 27 февраля 2010

Существует диаграмма, которая показывает список распространенных типов MIME и их соответствующие расширения. Здесь

...