實現HTTP檔案下載

來源:互聯網
上載者:User

標籤:stream   ati   pad   傳輸   containe   下載   href   div   檔案內容   

【原文:http://www.jb51.net/article/89958.htm】

 

HTTP實現檔案下載時,只要在伺服器設定好相關回應標頭,並使用二進位傳輸檔案資料即可,而用戶端(瀏覽器)會根據回應標頭接收檔案資料。而在Node.js中,設定好回應標頭後,讀取檔案流,再使用“.pipe()”方法將流轉接到響應對象Response就可以實現一個簡單的檔案下載伺服器。

1. 檔案下載介紹

HTTP基於要求標頭和回應標頭實現狀態互動,在得到伺服器正確響應狀態後,而用戶端首先會解析回應標頭,並根據回應標頭來接收和展示資料(響應體)。對於檔案下載來說,其實現過程如下:

    1.用戶端發起檔案資源請求

    2.伺服器尋找對應檔案,並設定”Content-Type”、”Content-Disposition”等回應標頭,分別用於表示檔案的”MIME”類型及檔案描述

    3.用戶端根據伺服器返回的回應標頭解析和接收檔案資料

需要設定的回應標頭

設定檔案下載回應標頭時,除了常用的HTTP回應標頭外,比較重要是還要設定以下兩個回應標頭:

?
12 Content-Type: application/octet-streamContent-Disposition: attachment; filename=MyFileName.ext

在上面的設定中,”Content-Type: application/octet-stream”告訴瀏覽器這是一個二進位檔案,”Content-Disposition”告訴瀏覽器這是一個需要下載的附件並告訴瀏覽器預設的檔案名稱。如果不添加”Content-Disposition”回應標頭,瀏覽器可能會下載或顯示檔案內容,不同瀏覽器的處理有所不同。

實現HTTP檔案下載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.