Тип mime


Развитие технологии и её появление

Типы MIME активно используются для передачи данных в HTTP-протоколе. Говоря простым языком, он описывает дополнительные атрибуты пересылаемого пакета и поддерживает возможность реализовать передачу нескольких файлов, даже вложенных друг в друга в рамках одного сообщения. Для того чтобы сообщить адресату о том, какой тип файла передаётся, и, соответственно, как с ним работать, в заголовке добавляется его MIME-тип. Например, обычный текст маркируется text/plain, а электронные страницы — text/html.

Зачем нужно знать о MIME?

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

Веб-программист пишет код для одной из страниц сайта. Он позволяет выполнить загрузку файла PDF. При этом в коде он указывает MIME для такого типа данных: application/pdf. Браузер, обращаясь к этой странице, читает заголовок и понимает, что это PDF-файл. И в зависимости от настроек либо сразу начинает его скачивать, либо просто откроет для просмотра в окне. Таким образом, разделение контента на типы позволяет клиенту адекватно реагировать на поступающие типы данных соответствующим способом.

Список MIME-типов


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

Категория text

В ней находятся типы, которые, так или иначе, связаны с передачей текстовой информации. Сюда могут входить скрипты, таблицы стилей, обыкновенный текст. В категорию входят:

  • Html. Язык гипертекстовой разметки. Ни один сайт в Интернете не сможет работать без его использования.
  • Css. Каскадные таблицы стилей. Оформление и взаимодействие объектов на странице осуществляется с помощью таких файлов.
  • Javascript. Увидев этот тип, браузер сразу поймёт, что ему нужно обработать участок кода — скрипт.
  • Plain. Простой обычный текст.
  • Xml. Файлы разметки по технологии XML.

Категория image

Здесь передаются расширения пересылаемых файлов, например таких:

  • gif;
  • jpeg;
  • tiff.

Категория application

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


  • Json. Удобный формат передачи данных. Сообщает браузеру о том, что ответ будет передан в json.
  • Pdf. В зависимости от настроек браузера данный тип может скачиваться, просматриваться в окне или же использовать стороннюю программу, установленную на компьютере.
  • Zip и gzip. Передача архивных файлов.
  • Ogg. Обозначение для мультимедиа контента.
  • Xhtml+xml. Формат передачи данных XHTML, который дополняет и увеличивает функционал классического HTML, а также привносит эффективность XML в стандарт.

Категория audio

По аналогии с графическими файлами в этой категории передаются в основном расширения:

  • Basic. Стандартный тип звукового файла.
  • Aac. Формат аудиофайла.
  • Mpeg. Здесь может передаваться mp3 или mpeg.
  • X-ms-wma или x-ms-wax. Тип данных Windows Media Audio.
  • Webm. Довольно молодой формат видео, разработанный компанией Google. Уже поддерживается многими браузерами и медиаплеерами.

X

X-типы относятся к категории application. С помощью них обозначаются нестандартные типы файлов. К ним, например, относятся архивы tar, RAR, FLASH и многие другие, не вошедшие в основной перечень.

Заключение

Список MIME type постоянно расширяется в связи с появлением новых технологий, стандартов и типов файлов. Ознакомиться с текущим перечнем можно в последних обновлениях документов RFC, касающихся типов MIME.

fb.ru

Литература


  • Многоцелевое расширение почты Интернет (MIME) Семенов Ю.А. (ГНЦ ИТЭФ)
  • MEDIA (MIME) типы и подтипы. Содержание поля Content-Type в HTTP и SMTP протоколах.
  • Расширение возможностей Internet-почты
  • Описание некоторых MIME
  • Не полный перевод почтового стандарта MIME (RFC1521)
  • Лабиринт Internet. Павел Храмцов, Электронинформ, 1996
  • Администрирование сети и сервисов InterNet. Учебное пособие, П.Б. Храмцов, 1997.

7.1 Что такое MIME?

MIME означает "Multipurpose Internet Mail Extensions" (Многоцелевые расширения почтового стандарта Internet). Этот стандарт описывает, как пересылать по электронной почте исполняемые, графические, мультимедийные, смешанные данные. Типичные применения MIME — пересылка графических изображений, аудио, документов Word, программ и даже просто текстовых файлов, то есть, когда важно, чтобы входе пересылки не производилось никаких преобразований над данными. MIME также позволяет размечать письмо на части различных типов так, чтобы получатель (почтовая программа) мог определить, что делать с каждой из частей письма.

Хотя формат первоначально создан для электронной почты, он также используется для службы WWW.


7.2 Для чего это нужно?

Так как файлы могут быть разными (.gif, .doc, .pdf …), браузер должен понимать, что с ними делать. Эту проблему решает стандарт "MIME — типы". Он сообщает клиенту, какой тип файлов получен, например:
Content-type: image/gif (графика GIF)
Content-type: image/jpeg (графика JPG)

7.3 Как это работает?

Браузеры используют MIME-типы в своих HTTP-заголовках Accept для того, чтобы сообщить, в каких форматах они предпочитают принимать данные (если сервер может выдать файл в разных форматах). Серверы используют MIME-типы в HTTP-заголовках Content-Type, чтобы сообщить клиенту о том, в каком формате передается прилагаемое содержимое: то ли это HTML, который нужно форматировать, то ли это GIF или JPEG, требующий визуализации, то ли это данные в формате PDF, для которого нужно открывать внешнюю программу просмотра или использовать дополнительное приложение.

Формат MIME-типа — тип/подтип. Можно использовать символ *; например, следующий заголовок клиента означает, что принимаются документы во всех форматах:

Accept: */*

Следующий заголовок клиента означает, что принимаются все типы формата text независимо от подтипа:

Accept: text/*

Серверы должны проверять данные о принимаемых типах, содержащиеся в заголовке Accept, и по возможности выдавать данные соответствующего типа. Большинство серверов определяют формат документа по расширению имени файла. Например, файлы с расширениями .htm и .html — это файлы в формате HTML, поэтому сервер посылает такой документ с типом text/html в заголовке Content-Type, пример:


Content-Type: text/html

Действия клиента при получении файла:

  1. При получении клиентом файла, анализируется HTTP заголовок, если в нем находится Content-Type, то клиент производит действие с файлом, учитывая эту информацию.

  2. Если записи нет, то клиент использует свой список MIME-типов, в котором тип определяется по расширению имени файла.

  3. Если тип в файле не найден, то клиент не знает что делать с этим файлом. Браузер в таком случае предлагает вам выбрать сами программу, которой надо передать файл.

7.4 Некоторые основные типы и подтипы MIME.

Первый стандарт — RFC1341 MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describing the Format of Internet Message Bodies N. Borenstein, N. Freed June 1992

Последняя версия (состоит из четырех частей) :

  • RFC2049 (Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples N. Freed, N. Borenstein November 1996)


  • RFC2048 (Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures N. Freed, J. Klensin, J. Postel November 1996)

  • RFC2047 (MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text K. Moore November 1996)

  • RFC2046 (Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types N. Freed, N. Borenstein November 1996)

  • RFC2045 (Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies N. Freed, N. Borenstein November 1996)

Text – текстовые типы.

Тип ‘text’ предназначен для пересылки текстовых материалов. Для обозначения языковой кодировки текста используется параметр "charset" для некоторых подтипов, включая подтип, "text/html", соответствующий простому (неформатированному) тексту.

Пример:

Content-Type: text/html; charset=windows-1251

Основные подтипы:
Content-Type: text/html — html текст.
Content-Type: text/plain — простой текст.
Content-Type: text/x-server-parsed-html — файл созданный с помощью SSI
Content-Type: text/css — файл содержащий стили — css

Multipart — данные состоят из несколько частей разных типов.


Основные подтипы:
Content-Type: multipart/mixed — несколько частей разных типов (используется в e-mail)
Content-Type: multipart/alternative — одна из частей (используется в e-mail)
Content-Type: multipart/x-mixed-replace — после загрузки следующая часть заменяет предыдущею (используется в анимации)

Message — инкапсулированное почтовое сообщение (используется в e-mail)

Image — графические типы.

Основные подтипы:
Content-Type: image/gif — изображение gif.
Content-Type: image/jpeg — изображение jpeg.
Content-Type: image/tiff — изображение tiff.
Content-Type: image/bmp — изображение bmp

Audio — звуковые типы.

Основные подтипы:
Content-Type: audio/wav — звук в формате wav.
Content-Type: audio/midi — звук в формате midi
Content-Type: audio/mpeg — звук в формате mp3.
Content-Type: audio/vqf — звук в формате vqf
Content-Type: audio/x-pn-realaudio — звук в формате ram rm
Content-Type: audio/x-realaudio — звук в формате ra
Content-Type: audio/x-wav — звук в формате wav

Video – видео типы.

Основные подтипы:
Content-Type: video/avi — видео в формате avi.
Content-Type: video/mpeg — видео в формате mpeg.


Application — представляет данные какого-нибудь приложения.

application/msword – приняв такое сообщение, браузер запустит MS Word для открытия этих данных. Если в системе нет MS Word, то браузер попросит сохранить данные в файле имя файла может находиться в параметре name. Например:

Content-Type: application/msword; name=”Mydoc.doc”

Основные подтипы:
Content-Type: application/msword — программа MS Word
Content-Type: application/pdf — программа Acrobat Reader
Content-Type: application/rtf — программа MS Word
Content-Type: application/zip — разархиватор ZIP-архивов

7.5 Серверные приложения.

Приложения на сервер можно использовать для создания счетчиков, форумов, чатов, обработки статистики, организации доступа к базам данных и т.д.

Для этого нужно чтобы клиенты могли запускать или работать с приложениями на сервере.

7.5.1 Методы использования серверных приложений.

  • Запуск через CGI-шлюз. Эти приложения могут быть написаны на любых языках.
    Преимущества:
    — используются обычные программы (в случае Windows .bat, .exe и тд.)
    — стандартизовано
    Недостатки:
    — при каждом вызове программы происходит ее запуск, что не есть быстро, и при большом количестве запросов, появляется много запущенных программ.


  • Приложения, встроенные в сервер HTTP, как модули. Как правило, написанные на С.
    Преимущества:
    — быстрота (т.к. всегда работает, не нужен запуск).
    Недостатки:
    — необходимость писать модуль для конкретного сервера HTTP.

  • Приложения, работающие через модули-шлюзы встроенные в сервер HTTP.
    Преимущества:
    — шлюз написан для конкретного приложения (например, для СУБД MySQL)
    Недостатки:
    — необходимость писать модул-шлюз для конкретного приложения.

  • Приложения, написанные на скриптовых языках (SSI, PERL, PHP, ASP и др.), для выполнения которых должны быть встроенные интерпретаторы, как модули сервера HTTP. Код этих приложений встраивается непосредственно в HTML страницы. Сервер распознает эти страницы по расширению (.php, .asp, .shtml, .pl).
    Преимущества:
    — быстрота (выше чем у CGI, но ниже чем у модуля, т.к. интерпретаторы).
    — удобно использовать
    Недостатки:
    — ограниченность возможностей

  • Приложения, работающие через Java Servlet.
    Преимущества:
    — платформо-независимость
    — серверо-независимость
    Недостатки:
    — приложения на Java работаю медленнее

  • Приложения, написанные на Java и встроенные в HTML страницы (с расширением .JSP (JavaServer Pages)). В принципе это аналог скриптовых языков работающих через модуль (в место модуля в данном случае Java Servlet, а язык Java)
    Преимущества:
    — платформо-независимость
    — серверо-независимость
    — удобно использовать
    Недостатки:
    — приложения на Java работаю медленнее


7.5.2 Архитектура WWW сервера с учетом серверных приложений

7-1

Архитектура современного WWW сервера. На выходе с сервера всегда HTML, но сгенерированный приложением.

7.5.3 Примеры запросов к приложениям

CGI

http://ipm.kstu.ru/cgi/search.cgi?text=сотрудники

В результате через CGI шлюз

  1. Будет запущено приложение search.cgi

  2. и будет передан запрос "text=сотрудники" приложению search.cgi

  3. Приложение search.cgi вернет результат работы CGI-шлюзу

PHP

http://ipm.kstu.ru/cgi/search.php?text=сотрудники

В результате

  1. Будет передан запрос "text=сотрудники" интерпретатору PHP.

  2. Интерпретатор будет выполнять команды search.php.

  3. Интерпретатор вернет результат работы WWW-серверу.

7.6 CGI-шлюз

Common Gateway Interface — стандарт для обмена данными между сервером и прикладной программой, которая запускается из-под сервера.

7.6.1 Механизмы обмена данными

Механизм можно разделить на четыре части:

  • переменные окружения

  • командную строку

  • стандартный ввод

  • стандартный вывод.

7.6.1.1 Переменные окружения

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

  • SERVER_NAME — определяет доменное имя сервера.

  • GATEWAY_INTERFACE — определяет версию протокола CGI.

  • SERVER_PROTOCOL — протокол сервера.

  • SERVER_SOFTWARE — версия сервера.

  • SERVER_PORT — определяет порт, по которому осуществляется взаимодействие.

  • REQUEST_METHOD — определяет метод, значения GET, POST, HEAD и т. п.

  • PATH_INFO — передает программе путь с переменными, часть URL переданный клиентом (т.е. относительный путь с переменными).

  • PATH_TRANSLATED — абсолютный путь, путь расположения программы на диске сервера.
    Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
    PATH_INFO = "/cgi-bin/search?text=ipm"
    PATH_TRANSLATED = "/usr/local/etc/httpd/cgi-bin/search".

  • SCRIPT_NAME — относительный путь без переменных.
    Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
    PATH_INFO = "/cgi-bin/search?text=ipm"
    SCRIPT_NAME = "/cgi-bin/search"

  • QUERY_STRING — переменная определяет содержание запроса к скрипту (все что после ?).
    Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
    QUERY_STRING ——-> "text=ipm"

Идентификация пользователя и его машины:

  • REMOTE_HOST — доменный адрес машины клиента.

  • REMOTE_ADDR — IP-адрес машины клиента.

  • AUTH_TYPE — тип идентификации пользователя.

  • REMOTE_USER — используется для идентификации пользователя.

  • REMOTE_IDENT — данная переменная порождается сервером, если он поддерживает идентификацию пользователя по протоколу RFC-931. Рекомендовано использование этой переменной для первоначального использования скрипта.

Тип и длина передаваемой информации от клиента к серверу.

  • CONTENT_TYPE — определяет MIME-тип данных.

  • CONTENT_LENGTH — определяет размер данных в байтах.

Переменные заголовка HTTP.

  • HTTP_ACCEPT — поле ACCEPT.

  • HTTP_USER_AGENT — поле USER-AGENT.

  • HTTP_HOST — поле HOST.

  • и т.д.

7.6.1.2 Командная строка

Командная строка используется только при запросах типа ISIN-DEX.

Существует тэг
<ISINDEX prompt="Введите Ваш текст для поиска:">

вместо тэга <FORM> .

Запрос выделяется из URL и преобразуется в параметры командной строки.

Если в запросе нет знака "=", то запрос не ISIN-DE.

Параметры, выделенные из запроса, помещаются в массив параметров командной строки argv.

Знаком разделения параметров является символ "+".

Пример:

запрос http://ipm.kstu.ru/cgi-bin/search?text+ipm+kstu является ISIN-DEX

командная строка будет выглядеть так search text+ipm+kstu

7.6.1.3 Стандартный ввод

Используется при передаче данных по методу POST. Объем передаваемых данных задается переменной окружения CONTENT_LENGTH, а тип данных — переменной CONTENT_TYPE.

7.6.1.4 Стандартный вывод

Используется для возврата данных серверу. При этом вывод состоит из заголовка и данных. Заголовок сообщения должен отделяться от тела сообщения пустой строкой. Обычно в ответах указывают только три поля HTTP-заголовка:

  • Content-type — тип MIME (Content-type: text/html)

  • Location — редирект на другой ресурс (Location: http://ipm.kstu.ru/index.php)

  • Status — код возврата (ошибки) (Status: 200 OK)

Пример вывода:

Content-type: text/html

<HTML>

<HEAD>

<TITLE>Тестовая страница</TITLE>

</HEAD>

<BODY>

Работает!!!

</BODY>

</HTML>

7.7 Серверные интерпретаторы

CGI технология самая старая, и в современное время лучше ее не использовать.

На смену ей пришли серверные интерпретаторы, такие как:

  • SSI — один из самых первых, и самый простой

  • PHP — достаточно развитый язык для написания скриптов

  • ASP — аналог от Microsoft

Код программ вставляется непосредственно в запрашиваемые страницы, по расширению (.php, .asp, .shtml, .pl) сервер понимает, что страницу надо передать соответствующему модулю-интерпретатору. Модуль-интерпретатор выполняет все команды, и результаты передает серверу. Сервер передает их клиенту.

7.8 Базы данных и виды доступа

7.8.1 Доступ к базам данных на стороне сервера

7.8.1.1 Доступ к базам данных с помощью CGI

Что бы обеспечить доступ, нужно создать программу, которая будет работать между сервером WWW и базой данных.

Или при использовании ODBC, между сервером WWW и ODBC.

7-2

Схемы доступа к базам данных через CGI

7.8.1.1 Доступ к базам данных с помощью модулей шлюзов

Чаще всего используются интерпретаторами.

Есть, например, модули php-mysql, perl-mysql.

7-3

Схемы доступа к базам данных с помощью модулей шлюзов

7.8.2 Доступ к базам данных на стороне клиента

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

7-4

Схемы доступа к базам данных на стороне клиента

Преимущества:

  • Не загружается сервер (обработка данных происходит на стороне клиента)

  • Не загружается канал (если только база данных не очень большая)

  • Можно работать с базой без подключения

Недостатки:

  • Все данные оказываются у клиента (проблема защиты от копирования)

  • Клиентская машина может оказаться слишком слабой для обработки данных

  • Нельзя передавать большие базы данных

  • Владельцы серверов заинтересованы в большой посещаемости, что уменьшится.

moodle.kstu.ru

Привет, хабр!

Недавно задался вопросом а сколько байт необходимо для корректного определения mime типа файла. В первую очередь погуглив, полученными ответами не удовлетворился и поэтому решил сам провести маленькое исследование на эту тему.

На изучение данного вопроса меня натолкнула следующая задача: определение MIME-типа файла, находящегося на smb-сервере. Лучшее, что я придумал — копировать кусок файла на локальную машину и потом, по этой части пытаться распознать его MIME-тип.

Тип mime

Для начала расскажу, что я нагуглил и почему мне это не понравилось:

Stack Overflow дает 2 ссылки на википедию:

  1. File Signature говорит, что в большинстве случаев достаточно 2-4 байтов. Однако к сожалению это не так, например, для такого популярного формата, как pdf.
  2. List of signatures приводит некоторый список подписей для файлов разных форматов, но он далеко не полный. Потом нашел File Signatures, здесь вроде как все.
    Однако вернемся все к тому же pdf. Если верить этим источника, то для определения того, что файл является pdf достаточно четырех байт (0x25 0x50 0x44 0x46), однако исходя из первых четырех байтов libmagic говорил, что MIME-тип pdf-файла — text/plain, а из пяти — верное application/pdf. Затрудняюсь точно ответить с чем это связано, надо смотреть исходники.

Теперь давайте перейдем, собственно говоря, к тому, что сделал я. Я написал очень маленькую программку, которая считывала все файлы из одной директории, копировала первые N байт в другую директорию, а затем по частичным копиям полученных файлов пыталась определить, а что это собственно говоря такое было. И так до тех пор, пока MIME-тип части файла не совпадет с MIME-типом оригинала. По результатам работы программа рапортовала, сколько байт понадобилось для определения того или иного типа. Вот ее код:

#include <stdio.h> #include <stdlib.h> #include <magic.h> #include <sys/types.h> #include <dirent.h> #include <errno.h> #include <string.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h>  #define TEST_DIR "test-dir/" #define TMP_DIR "tmp-dir/"  magic_t cookie;  // Detects how many bytes required for correct MIME-type of this file void detect_size(char *filename) {  int bytes = 1;  int infd, outfd;  char strin[100], strout[100], type[100];  char buf[4096];   strcpy(strin, TEST_DIR);  strcat(strin, filename);   strcpy(strout, TMP_DIR);  strcat(strout, filename);   while(1) {  // Make a copy of given file  infd = open(strin, O_RDONLY);  outfd = open(strout, O_RDWR | O_CREAT, 00666);  read(infd, &buf, bytes);  write(outfd, &buf, bytes);  lseek(infd, 0, SEEK_SET);  lseek(outfd, 0, SEEK_SET);   // Detect mime types of old and new   const char *mime_type = magic_descriptor(cookie, infd);  strcpy(type, mime_type);  mime_type = magic_descriptor(cookie, outfd);   // Check if mime type detected correctly  if (strcmp(mime_type, type) == 0) {  printf("%s detected correctly in %d bytesn", type, bytes);  unlink(strout);  return;  }   unlink(strout);  bytes++;  } }  int main() {  DIR *dirfd = opendir(TEST_DIR);  struct dirent entry, *result = NULL;   cookie = magic_open(MAGIC_MIME_TYPE | MAGIC_ERROR);  magic_load(cookie, NULL);   while(1) {  readdir_r(dirfd, &entry, &result);   if (result == NULL)  break; // No more entries in this directory   if (!strcmp(entry.d_name, ".") || !strcmp(entry.d_name, ".."))  continue; // Ignore "." and ".."   detect_size(entry.d_name);  }   magic_close(cookie);  closedir(dirfd);  exit(EXIT_SUCCESS); } 

Потом накидав кучку разных файлов в папку test-dir я начал экспериментировать. Конечно то, что я сделал ни как не тянет на полномасштабное и серьезное исследование, но некоторые результаты все таки интересны. Приведи их краткую сводку:

application/x-sharedlib detected correctly in 18 bytes
application/msword detected correctly in 1793 bytes
image/gif detected correctly in 4 bytes
application/zip detected correctly in 4 bytes
application/x-dosexec detected correctly in 2 bytes
application/vnd.oasis.opendocument.presentation detected correctly in 85 bytes
text/html detected correctly in 14 bytes
image/jpeg detected correctly in 2 bytes
application/x-executable detected correctly in 18 bytes
text/x-makefile detected correctly in 1594 bytes
application/x-executable detected correctly in 18 bytes
application/x-gzip detected correctly in 2 bytes
audio/mpeg detected correctly in 2291 bytes
text/x-c detected correctly in 27 bytes
audio/x-flac detected correctly in 4 bytes
application/pdf detected correctly in 5 bytes

Отмечу некоторые вещи, которые мне показались интересными:

  • Ну во-первых, конечно уже упомянутый pdf, который распознается в 5 байт, а не в 4, как вроде бы следовало ожидать.
  • И напоследок хочется отметить, что не смотря на всю крутость идеи определять тип файла по первым N байтам она, на мой взгляд, провалилась.

Ну это пожалуй все, что я хотел рассказать в этот раз, не люблю много писать. Надеюсь, что это статья окажется кому-нибудь интересной.
Спасибо за внимание.

habr.com

Большинство аббревиатур, которые мы с вами рассматриваем в ставшей уже традиционной для «Компьютерных вестей» рубрике FAQ, довольно специфичны и нужны далеко не всем и не всегда. В этом плане сегодняшняя аббревиатура отличается от них, потому что электронной почтой пользуются если не все, то почти все (по крайней мере, если у вас есть доступ к Интернету, то с вероятностью 99,9% можно считать, что у вас есть и электронный почтовый ящик — на корпоративном ли сервере, на бесплатном ли сервисе, не суть важно). А MIME и электронная почта — это вещи, которые неразрывно связаны друг с другом.

Итак, что же скрывается за этими четырьмя буквами? MIME, вообще говоря, расшифровывается как Multipurpose Internet Mail Extensions. На русский язык это можно перевести как «многоцелевые расширения интернет-почты». Фактически, именно благодаря MIME пользователи имеют возможность пересылать по электронной почте не только ASCII-текст, но и другие виды данных — музыку, картинки, заархивированные документы и т.д., и т.п. Собственно говоря, даже сам текст в кодировках, отличных от ASCII, как и заголовки, содержащие символы в таких кодировках, тоже передаются именно с использованием MIME.

Идея передачи бинарных данных по текстовым протоколам с помощью расширений MIME оказалась применимой не только для электронной почты. В World Wide Web MIME используется для определения типа контента браузером, что позволяет, например, открывать DOC-файлы сразу с помощью Microsoft Word, а мультимедийные — с помощью соответствующих проигрывателей. При этом система MIME расширяема, и каждый разработчик какого-либо формата может добавить свой MIME-тип, который будет использоваться для передачи файлов данного формата.

Названия типов данных в MIME записываются в виде «тип/подтип». Среди основных MIME-типов данных стоит, пожалуй, упомянуть следующие:

  • text/plain — обычный неформатированный текст (MIME-тип по умолчанию);
  • text/html — гипертекст;
  • image/jpg — JPEG-изображения;
  • audio/mp3 — MP3-аудиозаписи;
  • application/x-zip-compressed — ZIP-архивы;
  • multipart/mixed — текст с разнообразными вложениями.

Общий вид MIME-сообщения таков: версия формата MIME; заголовки, описывающие его содержимое; описание разделителя (для составного сообщения); пустая строка; тело сообщения.

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

www.kv.by

types { 	text/html				html htm shtml; 	text/css				css; 	text/xml				xml rss; 	image/gif				gif; 	image/jpeg				jpeg jpg; 	application/x-javascript		js; 	application/atom+xml			atom;  	text/mathml				mml; 	text/plain				txt; 	text/vnd.sun.j2me.app-descriptor	jad; 	text/vnd.wap.wml			wml; 	text/x-component			htc;  	image/png				png; 	image/tiff				tif tiff; 	image/vnd.wap.wbmp			wbmp; 	image/x-icon				ico; 	image/x-jng				jng; 	image/x-ms-bmp				bmp; 	image/svg+xml				svg svgz;  	application/java-archive		jar war ear; 	application/json			json; 	application/mac-binhex40		hqx; 	application/msword			doc; 	application/pdf				pdf; 	application/postscript			ps eps ai; 	application/rtf				rtf; 	application/vnd.ms-excel		xls; 	application/vnd.ms-powerpoint		ppt; 	application/vnd.wap.wmlc		wmlc; 	application/vnd.google-earth.kml+xml	kml; 	application/vnd.google-earth.kmz	kmz; 	application/x-7z-compressed		7z; 	application/x-cocoa			cco; 	application/x-java-archive-diff		jardiff; 	application/x-java-jnlp-file		jnlp; 	application/x-makeself			run; 	application/x-perl			pl pm; 	application/x-pilot			prc pdb; 	application/x-rar-compressed		rar; 	application/x-redhat-package-manager	rpm; 	application/x-sea			sea; 	application/x-shockwave-flash		swf; 	application/x-stuffit			sit; 	application/x-tcl			tcl tk; 	application/x-x509-ca-cert		der pem crt; 	application/x-xpinstall			xpi; 	application/xhtml+xml			xhtml; 	application/zip				zip;  	application/octet-stream		bin exe dll; 	application/octet-stream		deb; 	application/octet-stream		dmg; 	application/octet-stream		eot; 	application/octet-stream		iso img; 	application/octet-stream		msi msp msm; 	application/ogg				ogx;  	audio/midi				mid midi kar; 	audio/mpeg				mpga mpega mp2 mp3 m4a; 	audio/ogg				oga ogg spx; 	audio/x-realaudio			ra; 	audio/webm				weba;  	video/3gpp				3gpp 3gp; 	video/mp4				mp4; 	video/mpeg				mpeg mpg mpe; 	video/ogg				ogv; 	video/quicktime				mov; 	video/webm				webm; 	video/x-flv				flv; 	video/x-mng				mng; 	video/x-ms-asf				asx asf; 	video/x-ms-wmv				wmv; 	video/x-msvideo				avi; } 

toster.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.