MIME類型就是設(shè)定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開.多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式.
MIME的英文全稱是"Multipurpose Internet Email Extension",它是一種多用途網(wǎng)際郵件擴充協(xié)議,在1992年最早應用于電子郵件系統(tǒng),但后來也應用到瀏覽器.服務(wù)器會將它們發(fā)送的多媒體數(shù)據(jù)的類型告訴瀏覽器,而通知手段就是說明該多媒體數(shù)據(jù)的MIME類型,從而讓瀏覽器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等.服務(wù)器將MIME標志符放入傳送的數(shù)據(jù)中來告訴瀏覽器使用哪種插件讀取相關(guān)文件.
瀏覽器接收到文件后,會進入插件系統(tǒng)進行查找,查找出哪種插件可以識別讀取接收到的文件.如果瀏覽器不清楚調(diào)用哪種插件系統(tǒng),它可能會告訴用戶缺少某插件,或者直接選擇某現(xiàn)有插件來試圖讀取接收到的文件,后者可能會導致系統(tǒng)的崩潰.傳輸?shù)男畔⒅腥鄙費IME標識可能導致的情況很難估計,因為某些計算機系統(tǒng)可能不會出現(xiàn)什么故障,但某些計算機可能就會因此而崩潰.
檢查一個服務(wù)器是否正確設(shè)置了MIME類型的步驟是:
1. 在Netscape瀏覽器中打開服務(wù)器網(wǎng)頁
2. 進入"View"菜單,選擇"Page Info"
3. 在彈出的窗口中點擊上層框架中的"EMBED"
4. 在下層框架中查看MIME的類型是否為"application/x-director"或"application/x-shockwave-flash",如果是上述信息的話表明服務(wù)器已經(jīng)正確設(shè)置了MIME類型;而如果MIME類型列出的是文本內(nèi)容、八位一組的數(shù)據(jù)或是其它形式均表明服務(wù)器的MIME類型沒有設(shè)置正確.
如果服務(wù)器沒有正確標明其發(fā)送的數(shù)據(jù)的類型,服務(wù)器管理員應該正確添加相關(guān)信息,具體操作方法非常簡單快捷.
Microsoft公司應用于Windows系統(tǒng)下的瀏覽器使用ActiveX控件,而不是Netscape插件,這種瀏覽器不必象其它瀏覽器那樣依靠MIME的編碼."OBJECT"標簽的"CLSID"屬性準確地標明了應調(diào)用哪種程序來讀取接收到的文件,因此瀏覽器不必象"EMBED"標簽那樣選擇一種讀取程序.正因為如此,你往往會在使用帶插件的瀏覽器時遇到MIME問題,而使用ActiveX控件的瀏覽器則很少出現(xiàn)此類麻煩.
正由于上述工作方式的差別也解釋了一種現(xiàn)象,不知你是否發(fā)現(xiàn)在使用Netscape瀏覽器播放WAV文件時,瀏覽器會調(diào)用LiveConnect插件進行播放,而其它瀏覽器一般都使用通用的QuickTime的播放插件等來進行播放,這是因為Netscape瀏覽器接收文件需要讀取MIME標識符,以便決定調(diào)用哪種程序來讀取接收的文件,而服務(wù)器設(shè)置在Netscape瀏覽器中播放WAV文件應使用LiveConnect插件,因此Netscape瀏覽器接收到WAV格式的文件時必然就會調(diào)用LiveConnect插件,但由于其它瀏覽器不使用這種方式,因此它們都使用系統(tǒng)默認的播放WAV格式文件的播放器.當然Flash電影文件并不存在這種問題,因為只有Flash播放器才能夠正確讀取這種格式的文件.
在把輸出結(jié)果傳送到瀏覽器上的時候,瀏覽器必須啟動適當?shù)膽贸绦騺硖幚磉@個輸出文檔.這可以通過多種類型MIME(多功能網(wǎng)際郵件擴充協(xié)議)來完成.在HTTP中,MIME類型被定義在Content-Type header中.
例如,假設(shè)你要傳送一個Microsoft Excel文件到客戶端.那么這時的MIME類型就是“application/vnd.ms-excel”.在大多數(shù)實際情況中,這個文件然后將傳送給Execl來處理(假設(shè)我們設(shè)定Execl為處理特殊MIME類型的應用程序).在ASP中,設(shè)定MIME類型的方法是通過Response對象的ContentType屬性.
多媒體文件格式MIME
最早的HTTP協(xié)議中,并沒有附加的數(shù)據(jù)類型信息,所有傳送的數(shù)據(jù)都被客戶程序解釋為超文本標記語言HTML 文檔,而為了支持多媒體數(shù)據(jù)類型,HTTP協(xié)議中就使用了附加在文檔之前的MIME數(shù)據(jù)類型信息來標識數(shù)據(jù)類型.
MIME意為多目Internet郵件擴展,它設(shè)計的最初目的是為了在發(fā)送電子郵件時附加多媒體數(shù)據(jù),讓郵件客戶程序能根據(jù)其類型進行處理.然而當它被HTTP協(xié)議支持之后,它的意義就更為顯著了.它使得HTTP傳輸?shù)牟粌H是普通的文本,而變得豐富多彩.
每個MIME類型由兩部分組成,前面是數(shù)據(jù)的大類別,例如聲音audio、圖象image等,后面定義具體的種類.
常見的MIME類型
超文本標記語言文本 | .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來確認標準的MIME類型,但Internet發(fā)展的太快,很多應用程序等不及IANA來確認他們使用的MIME類型為標準類型.因此他們使用在類別中以x-開頭的方法標識這個類別還沒有成為標準,例如:x-gzip,x-tar等.事實上這些類型運用的很廣泛,已經(jīng)成為了事實標準.只要客戶機和服務(wù)器共同承認這個MIME類型,即使它是不標準的類型也沒有關(guān)系,客戶程序就能根據(jù)MIME類型,采用具體的處理手段來處理數(shù)據(jù).而Web服務(wù)器和瀏覽器(包括操作系統(tǒng))中,缺省都設(shè)置了標準的和常見的MIME類型,只有對于不常見的 MIME類型,才需要同時設(shè)置服務(wù)器和客戶瀏覽器,以進行識別.
由于MIME類型與文檔的后綴相關(guān),因此服務(wù)器使用文檔的后綴來區(qū)分不同文件的MIME類型,服務(wù)器中必須定義文檔后綴和MIME類型之間的對應關(guān)系.而客戶程序從服務(wù)器上接收數(shù)據(jù)的時候,它只是從服務(wù)器接受數(shù)據(jù)流,并不了解文檔的名字,因此服務(wù)器必須使用附加信息來告訴客戶程序數(shù)據(jù)的MIME類型.服務(wù)器在發(fā)送真正的數(shù)據(jù)之前,就要先發(fā)送標志數(shù)據(jù)的MIME類型的信息,這個信息使用Content-type關(guān)鍵字進行定義,例如對于HTML文檔,服務(wù)器將首先發(fā)送以下兩行MIME標識信息,這個標識并不是真正的數(shù)據(jù)文件的一部分.
Content-type: text/html
注意,第二行為一個空行,這是必須的,使用這個空行的目的是將MIME信息與真正的數(shù)據(jù)內(nèi)容分隔開.