js下載文件


本文的前提是:后台給的是一個可以下載的url的情況下的下載:

怎樣的文件url才能觸發瀏覽器的下載行為?(轉自SF

能觸發瀏覽器下載的url有兩類:

  • response header中指定了Content-Dispositionattachment,它表示讓瀏覽器把響應體作為附件下載到本地 (一般Content-Disposition還會指定filename, 下載的文件默認就是filename指定的名字)

  • response header中指定了Content-Type 為 application/octet-stream(無類型) 或者 application/zip(下載zip包時)以及其它幾個不常見類型 (其中還有瀏覽器差異),其中 application/octet-stream表示http response為二進制流(沒指定明確的type), 需要下載到本地, 由系統決定或者用戶手動指定打開方式。

在這種前提下,只需要瀏覽器請求了這個地址,都會自動下載,具體的方式如下:

1、iframe   加載請求此地址時會自動下載  //據說兼容先較好,推薦,使用的時候吧iframe設置為display;none即可

  <iframe name="hehe" src='下載url'></iframe>

2、a     點擊請求此地址時會自動下載

  <a href="下載url">下載</a>

  H5的download屬性 <a download href="下載url">下載</a> 這時候,如果返回的是img這種瀏覽器可以打開的文件時,也會下載(否則會直接打開)

3、form    發起submit請求此地址時會自動下載

<form 
   action="下載ur"
   method="get" 
>
   <button type="submit">下載</button>
</form>

4、window.location.href  賦值為此地址時會自動下載 ,如果是其他地址,會跳轉,但,當是下載的url,瀏覽器會發起請求,下載下來,並且不會改變本頁的 window.location.href

  window.location.href = “下載url”

4、window.open      賦值為此地址時會自動下載 ,但會先打開新標簽頁再下載再關閉新標簽頁,體驗不佳

  window.open = “下載url”

 

 

總之:只要是下載的url,只要讓瀏覽器發起請求,都會實現下載的功能;具體是什么原因,有待后期的學習。(我司是汪大神,分分鍾就說出了這個規律,想必必然有基礎理論的支持,也許是HTTP請求、或者后台知識的)


免責聲明!

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



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