【原文:http://www.jb51.net/article/89958.htm】
HTTP實現文件下載時,只要在服務器設置好相關響應頭,並使用二進制傳輸文件數據即可,而客戶端(瀏覽器)會根據響應頭接收文件數據。而在Node.js中,設置好響應頭后,讀取文件流,再使用“.pipe()”方法將流轉接到響應對象Response就可以實現一個簡單的文件下載服務器。
1. 文件下載介紹
HTTP基於請求頭和響應頭實現狀態交互,在得到服務器正確響應狀態后,而客戶端首先會解析響應頭,並根據響應頭來接收和展示數據(響應體)。對於文件下載來說,其實現過程如下:
1.客戶端發起文件資源請求
2.服務器查找對應文件,並設置”Content-Type”、”Content-Disposition”等響應頭,分別用於表示文件的”MIME”類型及文件描述
3.客戶端根據服務器返回的響應頭解析和接收文件數據
需要設置的響應頭
設置文件下載響應頭時,除了常用的HTTP響應頭外,比較重要是還要設置以下兩個響應頭:
|
1
2
|
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=MyFileName.ext
|
在上面的設置中,”Content-Type: application/octet-stream”告訴瀏覽器這是一個二進制文件,”Content-Disposition”告訴瀏覽器這是一個需要下載的附件並告訴瀏覽器默認的文件名。如果不添加”Content-Disposition”響應頭,瀏覽器可能會下載或顯示文件內容,不同瀏覽器的處理有所不同。
