2010-02-27 2 views
4

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

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


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

ответ

2

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

+0

Большое спасибо Синан. Идем туда сейчас. – Jim

+0

На этой ссылке, которую вы дали, например, text/pascal ассоциируется с расширением .pas. В моем случае простой текстовый файл интерпретируется как текст/паскаль по какой-то странной причине. – Jim

4

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

3

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

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

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


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

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

3

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

[ДОПОЛНЕНО] Я задал вопрос, но не получил ответа.Изучив этот вопрос чуть более, выясняется, что identifying text formats is, in general, really difficult. Если вы получите «текст/*» MIME-тип обратно из файла, вам может потребоваться игнорировать результат и предположить, что ресурс является просто «text/plain», если только ложные негативы (text/html, возможно, не будут) могут вызвать трудности.

 Смежные вопросы

  • Нет связанных вопросов^_^