MIME,?全稱為“Multipurpose?Internet?Mail?Extensions”,?比較確切的中文名稱為“多用途互聯(lián)網(wǎng)郵件擴展”。它是當(dāng)前廣泛應(yīng)用的一種電子郵件技術(shù)規(guī)范,基本內(nèi)容定義于RFC?2045-2049
什么是MIME類型?-在把輸出結(jié)果傳送到瀏覽器上的時候,瀏覽器必須啟動適當(dāng)?shù)膽?yīng)用程序來處理這個輸出文檔。這可以通過多種類型MIME(多功能網(wǎng)際郵件擴充協(xié)議)來完成。在HTTP中,MIME類型被定義在Content-Type?header中。
例如,架設(shè)你要傳送一個Microsoft?Excel文件到客戶端。那么這時的MIME類型就是“application/vnd.ms-excel”。在大多數(shù)實際情況中,這個文件然后將傳送給?Execl來處理(假設(shè)我們設(shè)定Execl為處理特殊MIME類型的應(yīng)用程序)。在ASP中,設(shè)定MIME類型的方法是通過Response對象的?ContentType屬性。
多媒體文件格式MIME
最早的HTTP協(xié)議中,并沒有附加的數(shù)據(jù)類型信息,所有傳送的數(shù)據(jù)都被客戶程序解釋為超文本標(biāo)記語言HTML?文檔,而為了支持多媒體數(shù)據(jù)類型,HTTP協(xié)議中就使用了附加在文檔之前的MIME數(shù)據(jù)類型信息來標(biāo)識數(shù)據(jù)類型。
MIME意為多目Internet郵件擴展,它設(shè)計的最初目的是為了在發(fā)送電子郵件時附加多媒體數(shù)據(jù),讓郵件客戶程序能根據(jù)其類型進行處理。然而當(dāng)它被HTTP協(xié)議支持之后,它的意義就更為顯著了。它使得HTTP傳輸?shù)牟粌H是普通的文本,而變得豐富多彩。
每個MIME類型由兩部分組成,前面是數(shù)據(jù)的大類別,例如聲音audio、圖象image等,后面定義具體的種類。
常見的MIME類型
超文本標(biāo)記語言文本?.html,.html?text/html
普通文本?.txt?text/plain
RTF文本?.rtf?application/rtf
GIF圖形?.gif?image/gif
JPEG圖形?.ipeg,.jpg?image/jpeg
au聲音文件?.au?audio/basic
MIDI音樂文件?mid,.midi?audio/midi,audio/x-midi
RealAudio音樂文件?.ra,?.ram?audio/x-pn-realaudio
MPEG文件?.mpg,.mpeg?video/mpeg
AVI文件?.avi?video/x-msvideo
GZIP文件?.gz?application/x-gzip
TAR文件?.tar?application/x-tar
Internet中有一個專門組織IANA來確認(rèn)標(biāo)準(zhǔn)的MIME類型,但I(xiàn)nternet發(fā)展的太快,很多應(yīng)用程序等不及IANA來確認(rèn)他們使用的?MIME類型為標(biāo)準(zhǔn)類型。因此他們使用在類別中以x-開頭的方法標(biāo)識這個類別還沒有成為標(biāo)準(zhǔn),例如:x-gzip,x-tar等。事實上這些類型運用的很廣泛,已經(jīng)成為了事實標(biāo)準(zhǔn)。只要客戶機和服務(wù)器共同承認(rèn)這個MIME類型,即使它是不標(biāo)準(zhǔn)的類型也沒有關(guān)系,客戶程序就能根據(jù)MIME類型,采用具體的處理手段來處理數(shù)據(jù)。而Web服務(wù)器和瀏覽器(包括操作系統(tǒng))中,缺省都設(shè)置了標(biāo)準(zhǔn)的和常見的MIME類型,只有對于不常見的?MIME類型,才需要同時設(shè)置服務(wù)器和客戶瀏覽器,以進行識別。
由于MIME類型與文檔的后綴相關(guān),因此服務(wù)器使用文檔的后綴來區(qū)分不同文件的MIME類型,服務(wù)器中必須定義文檔后綴和MIME類型之間的對應(yīng)關(guān)系。而客戶程序從服務(wù)器上接收數(shù)據(jù)的時候,它只是從服務(wù)器接受數(shù)據(jù)流,并不了解文檔的名字,因此服務(wù)器必須使用附加信息來告訴客戶程序數(shù)據(jù)的MIME類型。服務(wù)器在發(fā)送真正的數(shù)據(jù)之前,就要先發(fā)送標(biāo)志數(shù)據(jù)的MIME類型的信息,這個信息使用Content-type關(guān)鍵字進行定義,例如對于HTML文檔,服務(wù)器將首先發(fā)送以下兩行MIME標(biāo)識信息,這個標(biāo)識并不是真正的數(shù)據(jù)文件的一部分。
Content-type:?text/html
注意,第二行為一個空行,這是必須的,使用這個空行的目的是將MIME信息與真正的數(shù)據(jù)內(nèi)容分隔開。