Существует ли универсальный тип MIME для всех файлов изображений?

27

Я знаю, что могу использовать определенные типы MIME, перечисленные, например, здесь , или универсальный MIME-тип для любого файла, например application/octet-stream, но существует ли универсальный MIME-тип для всех файлов изображений?

(Я хочу отредактировать .desktopфайл в Linux Mint KDE, чтобы создать запись контекстного меню «Действие» в Dolphin File Manager, которая будет отображаться только для файлов изображений.)

Excellll
источник
1
Будет image/*работать (как в браузерах)?
Болдевин
@Boldewyn - image/*работает в целях, указанных в моем вопросе, даже для svgфайлов - то есть, как запись рабочего стола, как MimeType=image/*. Пожалуйста, ответьте на этот более конкретный вопрос, на который вы комментируете ответ.

Ответы:

26

Существует ли универсальный тип MIME для всех файлов изображений?

Обычно нет, но есть несколько исключений, задокументированных позже в этом ответе.

Вам нужен MIME-тип, чтобы знать, как обрабатывать файл (без необходимости читать заголовок файла).

Заметки:

  • Не все файлы изображений имеют заголовок, который определяет их тип.

  • Например, файлы SVG - это просто файлы XML. Таким образом, без правильного mimetype или расширения не было бы способа правильно определить тип файла.

  • Типы MIME указаны как Content-Type / subtype

  • Тип Mime отсутствует image/generic(полный список подтипов зарегистрированных изображений IANA см. Ниже).


Означает ли это, что есть MIME-тип для нескольких файлов изображений?

Не существует сингла, Content-Type/subtype который бы охватывал несколько форматов изображений.

Теоретически вы можете использовать неизвестный подтип, такой как, image/xyzно W3C прямо говорит:

«Типа содержимого image/xyzдостаточно, чтобы сообщить пользовательскому агенту, что данные являются изображением, даже если пользовательский агент не знает определенного формата изображения xyz...» такое действие может быть целесообразным для нераспознанных подтипов текста, но не для непризнанных подтипов изображения или аудио "

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

Таким образом, Content-Type «image / xyz» достаточно, чтобы сообщить пользовательскому агенту, что данные являются изображением, даже если пользовательский агент не знает о конкретном формате изображения «xyz».

Такая информация может использоваться, например, для принятия решения о том, показывать или нет пользователю необработанные данные из нераспознанного подтипа - такое действие может быть целесообразным для нераспознанных подтипов текста, но не для нераспознанных подтипов изображения или звука.

По этой причине зарегистрированные подтипы аудио, изображений, текста и видео не должны содержать встроенную информацию, которая действительно имеет другой тип. Такие составные типы должны быть представлены с использованием типов «multipart» или «application».

Source W3C - Поле заголовка типа содержимого


Могу ли я использовать подстановочный знак, как image/*для моего особого случая?

так что это может быть использовано для моих целей без необходимости указывать единственные расширения файлов / mimes?

Да. Как вы указали, подстановочный знак может использоваться при указании «записи рабочего стола» для рабочих сред KDE и GNOME.

Тем не менее, обратите внимание, что Key = MimeTypeустарела, поскольку есть новый стандарт для этого.

Type=MimeTypeустарела, поскольку теперь существует новый стандарт для этого, см. спецификацию базы данных Shared MIME-info для получения дополнительной информации. В результате шаблоны ключей (различные расширения имен файлов, связанные с типом MIME) и DefaultApp (приложение по умолчанию, связанное с этим типом MIME) также устарели.

Источник Спецификация запись Desktop

Вы также можете использовать шаблоны подстановки для типов пантомимы в IIS, но рекомендуется не делать этого:

Вы также можете настроить IIS для обслуживания неопределенных типов файлов, добавив подстановочный знак (*) MIME-тип.

Не используйте групповые MIME-типы на производственных серверах. Это может привести к тому, что IIS будет обслуживать нераспознанные файлы и отображать конфиденциальную информацию для пользователей.

MIME-типы с подстановочными знаками предназначены для целей тестирования или в тех случаях, когда фильтры Internet Server API (ISAPI) были специально разработаны для обработки этих сценариев с подстановочными знаками, например, ISAPI с настраиваемой аутентификацией.

Источник Создание глобальных типов MIME


дальнейшее чтение

ДэвидПостилл
источник
Означает ли это, что есть MIME-тип для нескольких файлов изображений - не для всех, а для многих, чтобы его можно было использовать для моих целей без необходимости указывать единственные расширения / mimes для файлов?
2
@cipricus Нет единого, content-type/subtype который охватывает несколько форматов изображений.
Дэвид Постилл
@cipricus Ответ обновлен с учетом вашего комментария.
DavidPostill
как указано в комментарии под моим вопросом, image/*работает в целях, указанных в моем вопросе, даже для svgфайлов - то есть, как запись рабочего стола, как MimeType=image/*.
Это может хорошо работать, но в соответствии со спецификацией Entry Entry Specification « Type=MimeTypeустарело, так как теперь существует новый стандарт для этого, см. Спецификацию базы данных Shared MIME-info для получения дополнительной информации. В результате шаблоны ключей (различные расширения имен файлов, связанные с MIME-тип) и DefaultApp (приложение по умолчанию, связанное с этим MIME-типом) также не рекомендуется. "
Дэвид Постилл
2

Согласно этому SO-Ответу, нет общего MIME-типа. Проблема в том, что MIME-тип всегда состоит из типа, подтипа и необязательного параметра: Type/Subtype; Parameter(см. Здесь ). Вы хотите использовать только тип, но по определению требуется подтип, и нет общего подтипа. Список всех типов изображений можно найти здесь .

jrast
источник
Как ни странно, в этом списке «всех» типов изображений есть пробелы для gifи jpeg, тогда как этот список sitepoint.com/web-foundations/mime-types-complete-list показывает, что они есть image/gifи image/jpegсоответственно.
user664833