js從服務器下載文件


  通常,將文件絕對路徑url作為超鏈接<a>的鏈接地址href的值,點擊<a>后,瀏覽器將會嘗試請求文件資源,如果瀏覽器能夠辨認文件類型,則將會以預設的打開方式直接打開下載的文件。(關於預設的文件打開方式,windows -> 控制面板 -> Internet屬性 -> 程序 -> 設置程序 -> 將文件類型或協議與程序關聯)

  不過,這里有一個弊端,通常,文件如果沒有默認的打開文件方式,將會被標注為未知應用程序,不過如果你設置了該文件的打開方式一次之后,瀏覽器請求了該資源就將以這種方式打開,而且你不能再將期設置回“未知應用程序”的類型,這樣將會導致你通過訪問<a>來下載這個文件成為泡影。

  那么,正確的將<a>作為下載文件鏈接的方式是什么呢?

  還是需要從后台服務器返回的文件類型想辦法。

  在這里,我們只需要在前端請求后端文件流時,將返回的response頭的“content-type”值設置為“application/x-msdownload; charset=utf-8”。這樣瀏覽器將會將文件流當作下載動作而打開文件默認的下載文件框。

  在現在的大部分現代瀏覽器里面,直接這么設置就可以了,不過在一些比較老舊的瀏覽器中,可能還需要設置response頭的"Content-Disposition"值為"attachment; filename=",這里跟上文件的名稱並進行utf-8編碼轉換。 不過,現在使用的大部分瀏覽器,並不需要這樣顯式的設置utf-8編碼了。

 


免責聲明!

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



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