MIME-Types - Multipurpose Internet Mail Extensions
MIME ist die Abkürzung für Multipurpose Internet Mail Extensions. Es handelt sich um eine Kodierung, die den Anwendungsprogrammen im Internet einen Hinweis auf den verwendeten Datentyp geben soll. Ursprünglich wurde dieses Schema für Datei-Anhänge (Attachments) in E-Mails eingeführt. Innerhalb dieser Multipart-Mails trennt MIME die Datei vom Rest der E-Mail und gibt den empfangenden E-Mail-Clients einen Hinweis auf den Datentyp. Diese Information ist wichtig, damit der Empfänger weiß, mit welchem Programm er die Datei öffnen kann.
Was sich für E-Mails als nützlich erwiesen hat, wurde dann für andere Protokolle eingeführt, die zwischen zwei Stationen Daten übertragen. So haben verschiedene HTML-Elemente Attribute, die den MIME-Type als Angabe enthalten. Auch im HTTP-Header hat der MIME-Type seinen Platz gefunden. Sowohl der Browser, als auch der Web-Server führen eine Liste mit ihren bekannten MIME-Types. Bei jeder Kommunikation zwischen Browser und Web-Server wird der MIME-Type ausgehandelt. In der Regel akzeptiert ein Browser jeden MIME-Type. Kennt er ihn nicht, bietet er dem Anwender den Download dieser Datei an. Der Anwender kann sich dann später entscheiden, welches Programm für die Datei geeignet ist.
Ursprünglich konnte man mit SMTP in E-Mails nur Buchstaben, Zahlen und Zeichen versenden. Mit MIME werden die Dateien in Buchstaben und Zeichen umgewandelt und beim Empfänger wieder zurückgewandelt.
Medientypen und Subtypen
Der MIME-Type besteht aus der Angabe eines Medientyps und eines Subtyps, die durch einen Schrägstrich voneinander getrennt sind. Z. B. text/html oder image/jpeg.
Der Medientyp weist daraufhin, um welche Art es sich handelt. Typische Beispiele sind Text, Bilder, Video und Audio.
Medientypen | Beschreibung |
---|---|
text | Dateien mit ASCII-Text |
image | Bilder, Grafiken, Fotos |
video | Video-Dateien |
audio | Audio-Dateien |
application | Dateien, die an ein bestimmtes Anwendungsprogramm gebunden sind |
mulitpart | mehrteilige Daten |
message | Nachrichten |
model | Dateien mit mehrdimensionalen Strukturen |
example | Beispiel-Medientyp für Dokumentationen |
Aus dem Medientyp ergibt sich die Art der Datenstruktur, also ob die Datei Binär oder nach ASCII abgelegt sind. Der Subtyp bezieht sich auf ein oder mehrere Dateiformate, die an ein bestimmtes Programm gebunden sind oder mit speziellen Programmen oder Plugins ausgeführt werden müssen. Subtypen, die mit einem "x-" anfangen, sind Dateien, die auf einem Server ausgeführt werden. Da es sehr viele MIME-Types gibt, ist die folgende Tabelle nur eine kleine Auswahl der wichtigsten und am häufigsten vorkommenden MIME-Types.
MIME-Type | Dateiendung | Beschreibung |
---|---|---|
application/gzip | *.gz | GNU Zip-Dateien |
application/msexcel | *.xls *.xla | Microsoft Excel Dateien |
application/mspowerpoint | *.ppt *.ppz *.pps *.pot | Microsoft Powerpoint Dateien |
application/msword | *.doc *.dot | Microsoft Word Dateien |
application/octet-stream | *.bin *.exe *.com *.dll *.class | Ausführbare Dateien |
application/pdf | Adobe PDF-Dateien | |
application/postscript | *.ai *.eps *.ps | Adobe Postscript-Dateien |
application/rtf | *.rtf | Microsoft RTF-Dateien |
application/x-javascript | *.js | serverseitige JavaScript-Dateien |
application/x-httpd-php | *.php *.phtml | PHP-Dateien |
application/zip | *.zip | ZIP-Archivdateien |
audio/x-pn-realaudio | *.ram *.ra | RealAudio-Dateien |
audio/x-pn-realaudio-plugin | *.rpm | RealAudio-Plugin-Dateien |
audio/x-qt-stream | *.stream | Streaming-Dateien |
audio/x-wav | *.wav | Wav-Dateien |
image/gif | *.gif | GIF-Dateien |
image/jpeg | *.jpeg *.jpg *.jpe | JPEG-Dateien |
image/tiff | *.tiff *.tif | TIFF-Dateien |
multipart/alternative | mehrteilige Daten gemischt | |
multipart/byteranges | mehrteilige Daten mit Byte-Angaben | |
multipart/digest | mehrteilige Daten / Auswahl | |
multipart/encrypted | mehrteilige Daten verschlüsselt | |
multipart/form-data | mehrteilige Daten aus HTML-Formular (z.B. File-Upload) | |
multipart/mixed | mehrteilige Daten gemischt | |
text/css | *.css | CSS Stylesheet-Dateien |
text/html | *.htm *.html *.shtml | -Dateien |
text/javascript | *.js | JavaScript-Dateien |
text/plain | *.txt | reine Textdateien |
video/mpeg | *.mpeg *.mpg *.mpe | MPEG-Dateien |
video/quicktime | *.qt *.mov | Quicktime-Dateien |
video/x-msvideo | *.avi | Microsoft AVI-Dateien |
Beispiel für MIME-Type in E-Mails
Die folgenden Zeilen zeigen den Quelltext einer E-Mail.
[E-Mail-Header gekürzt] From: "Sender" <sender@beispiel.org> To: <empfaenger@beispiel.org> Subject: =?ISO-8859-15?B?R3J13w==?= Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__Part466D9E30.0__=" --=__Part466D9E30.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Eine Foto im Anhang. --=__Part466D9E30.0__= Content-Type: image/jpeg; name="foto.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="foto.jpg" /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB [Anhang gekürzt] RAQFCBcwRD8H6y8B+voDMoSa1I4Md6+UMzwKVdT31/fz4cotgwwoZDa1sbvrwU1QcEYNlI3KwKwZ uiFj1Ka6BVAM2WU4FCh+xfXS1/p573//2Q== --=__Part466D9E30.0__=--
Beispiel für MIME-Type in einem HTTP-Response (Antwort vom Server)
Die folgenden Zeilen zeigen den Header einer HTTP-Antwort vom Server. Der Content-Type deutet daraufhin, welche Art von Daten folgen.
Beispiel 1: Text im HTML-Format
HTTP/1.x 200 OK Date: Fri, 04 Sep 2009 18:12:35 GMT Server: Apache/1.3.34 Ben-SSL/1.55 Keep-Alive: timeout=2, max=200 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html
Beispiel 2: Bild im GIF-Format
HTTP/1.x 200 OK Content-Length: 35 Date: Sun, 19 Jul 2009 17:30:00 GMT Content-Type: image/gif