mime模組響應或設定Node.js的Content-Type頭

來源:互聯網
上載者:User

標籤:blank   測試   接受   程式   file   模組安裝   參數   obj   相對   

轉載自:https://itbilu.com/nodejs/core/VJYaAfKrl.html

  MIME,即:Multipurpose Internet Mail Extensions,多用途互連網郵件擴充類型。其主要用途是設定某種副檔名的檔案的響應程式類型,我們可以認為是當指定副檔名檔案被訪問時,瀏覽器會自動使用指定應用程式來開啟。在HTTP中,是通過名為Content-Type的HTTP頭來設定或響應對應的檔案類型的。例如:當伺服器要向用戶端發送的內容圖類為.jpg圖片,就需要將Content-Type頭設定為image/jpeg,而用戶端同樣會根據Content-Type對伺服器內容進行解析。

  MIMEContent-Type是檔案類型設定和解板的標準。當伺服器要對某種副檔名檔案發送到用戶端時,會根據副檔名設定Content-Type頭。而用戶端(可以認為是瀏覽器),對伺服器內容進行解析時也需要Content-Type所代表的MIME找到內容的解析程式。MIME類型非常多,當我們在服務端設定發送內容格式時或當我們對服務端內容進行解析時,對幾百種MIME類型進行處理工作量會非常巨大。

推薦一個NPM包:mimemime模組使用Apache項目的mime.types檔案,該檔案包含了超過600個Content-Type類型資料,並且支援添加自訂的MIME類型。

 

1.  mime安裝

mime模組是一個基於mime-dbMIME類型解析及處理常式。

使用npm安裝模組:

npm install mime

安裝後,mime模組測試:

npm run test

mime模組安裝後,可以命令列下使用(命令列下使用需要npm install -g全域安裝),格式如下:

mime [path_string]

如,mime模組查看目前的目錄下app.js檔案的類型:

mime app.js//application/javascript

 

2.  mime模組的查詢API

通過mime模組可以通過檔案及其擴充查詢與檔案關聯的MIME類型,也可以通過MIME類型反向尋找檔案的副檔名。

2.1 查詢檔案的類型 mime.lookup(path)

使用mime模組查詢檔案的MIME類型:

var mime = require(‘mime‘);mime.lookup(‘/path/to/file.txt‘);         // => ‘text/plain‘mime.lookup(‘file.txt‘);                  // => ‘text/plain‘mime.lookup(‘.TXT‘);                      // => ‘text/plain‘mime.lookup(‘htm‘);                       // => ‘text/html‘

 

mime.default_type返回預設類型

當通過mime.lookup()尋找的檔案MIME類型不存在時會返回application/octet-stream類型。mime.lookup()尋找的檔案時路徑不區分大小寫。可以通過mime.default_type返回當前使用的預設類型。

 

2.2 查詢檔案護展名 mime.extension(type)

mime模組提供了查詢副檔名的方法,我們可以通過Content-Type所表示的MIME類型尋找到檔案的副檔名,並最終確認內容解析形式和解析程式。

mime.extension(‘text/html‘);                 // => ‘html‘mime.extension(‘application/octet-stream‘);  // => ‘bin‘

 

2.3 尋找類型編碼 mime.charsets.lookup()

通過mime模組可以查詢MIME類型所使用的編碼:

mime.charsets.lookup(‘text/plain‘);        // => ‘UTF-8‘

 

3.  mime自訂類型

mime模組內建的mime-db庫不存在或不能滿足我們所需的MIME類型時,還可以自訂MIME類型。

3.1 自訂類型 mime.define()
mime.define(obj)

該方法接受一個參數obj,是一個表示mime類型/副檔名的對象。

mime.define({    ‘text/x-some-format‘: [‘x-sf‘, ‘x-sft‘, ‘x-sfml‘],    ‘application/x-my-type‘: [‘x-mt‘, ‘x-mtt‘],    // etc ...});mime.lookup(‘x-sft‘);                 // => ‘text/x-some-format‘

 

3.2 載入類型檔案 mime.load(filepath)

mime模組支援從一個Apache的mime.types檔案載入MIME類型,相對於自訂類型,從現有檔案中載入類型更為方便:

mime.load(‘./my_project.types‘);


mime模組響應或設定Node.js的Content-Type頭

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.