實現HTTP文件下載


【原文: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”響應頭,瀏覽器可能會下載或顯示文件內容,不同瀏覽器的處理有所不同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM