fileinfo и типы mime, о которых я никогда не слышал

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

Есть ли чит-лист, который даст мне все «общие» мимы, поскольку они интерпретируются файловым файлом?


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

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

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

Функции в этом модуле пытаются угадать тип содержимого и кодировку файла путем поиска определенных последовательностей магического байта в определенных положениях файла.

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

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

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

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

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

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