js實(shí)現(xiàn)下載(文件流式)方法詳解與完整實(shí)例源碼
在介紹JS文件流式下載文件方法之前,先記錄下window.location.href
的使用方法
window.location.href的用法
javascript中的location.href有很多種用法,主要如下。
self.location.href="/url"http://當(dāng)前頁(yè)面打開(kāi)URL頁(yè)面 location.href="/url"http://當(dāng)前頁(yè)面打開(kāi)URL頁(yè)面 windows.location.href="/url" //當(dāng)前頁(yè)面打開(kāi)URL頁(yè)面,前面三個(gè)用法相同。 this.location.href="/url" //當(dāng)前頁(yè)面打開(kāi)URL頁(yè)面 parent.location.href="/url" // 在父頁(yè)面打開(kāi)新頁(yè)面 top.location.href="/url" //在頂層頁(yè)面打開(kāi)新頁(yè)面
如果頁(yè)面中自定義了frame,那么可將parent self top換為自定義frame的名稱,效果是在frame窗口打開(kāi)url地址
此外,window.location.href=window.location.href;
和window.location.Reload()
和都是刷新當(dāng)前頁(yè)面。區(qū)別在于是否有提交數(shù)據(jù)。
當(dāng)有提交數(shù)據(jù)時(shí),window.location.Reload()
會(huì)提示是否提交,window.location.href=window.location.href;
則是向指定的url提交數(shù)據(jù)
JS文件流式下載文件源碼實(shí)例
下面是使用axios
寫(xiě)的一個(gè)完整JS文件流式下載文件的完整源碼
const apiurl = '' // 接口地址 this.exportLoading = true axios.post(apiurl, params, { 'responseType': 'blob' //設(shè)置響應(yīng)的數(shù)據(jù)類型為一個(gè)包含二進(jìn)制數(shù)據(jù)的 Blob 對(duì)象,必須設(shè)置?。?! }).then( (response) =>{ console.log('response', response, response.data.size) this.exportLoading = false if(response.data){ if(response.data.size < 1000){ // 根據(jù)文件流的大小判斷異常情況 if(response.data.size == 63){ this.$message.warning('查無(wú)結(jié)果'); return } if(response.data.size == 84){ this.$message.warning('導(dǎo)出數(shù)據(jù)超出最大限制值'); return } }else{ const blob = new Blob([response.data],{type: 'application/vnd.ms-excel'}) const linkNode = document.createElement('a'); linkNode.style.display = 'none'; linkNode.href = URL.createObjectURL(blob); //生成一個(gè)Blob URL document.body.appendChild(linkNode); linkNode.click(); //模擬在按鈕上的一次鼠標(biāo)單擊 URL.revokeObjectURL(linkNode.href); // 釋放URL 對(duì)象 document.body.removeChild(linkNode); } } }).catch( (error) =>{ console.log(error); this.exportLoading = false });
- js實(shí)現(xiàn)文件流式下載文件方法詳解及完整代碼
- JavaScript進(jìn)階之前端文件上傳和下載示例詳解
- javascript實(shí)現(xiàn)生成并下載txt文件方式
- javascript Blob對(duì)象實(shí)現(xiàn)文件下載
- JavaScript 中如何實(shí)現(xiàn)大文件并行下載
- JavaScript實(shí)現(xiàn)多文件下載方法解析
- javascript使用Blob對(duì)象實(shí)現(xiàn)的下載文件操作示例
- JavaScript實(shí)現(xiàn)文件下載并重命名代碼實(shí)例
- 使用 JavaScript 創(chuàng)建并下載文件(模擬點(diǎn)擊)
相關(guān)文章
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方
本篇文章主要介紹了javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法)需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12谷歌Chrome瀏覽器擴(kuò)展程序開(kāi)發(fā)小記
本文給大家記錄的是一次谷歌Chrome瀏覽器擴(kuò)展程序的開(kāi)發(fā)過(guò)程,非常的細(xì)致,有類似開(kāi)發(fā)念頭的小伙伴們可以來(lái)參考下2016-01-01Bootstrap入門書(shū)籍之(五)導(dǎo)航條、分頁(yè)導(dǎo)航
這篇文章主要介紹了Bootstrap入門書(shū)籍之(五)導(dǎo)航條、分頁(yè)導(dǎo)航的相關(guān)資料,需要的朋友可以參考下2016-02-02Javascript HTML5 Canvas實(shí)現(xiàn)的一個(gè)畫(huà)板
這篇文章主要為大家詳細(xì)介紹了Javascript HTML5 Canvas實(shí)現(xiàn)的一個(gè)畫(huà)板的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05JavaScript中字符串GBK與GB2312的編解碼示例講解
在瀏覽器JavaScript環(huán)境中,可以使用TextEncoder和TextDecoder?API?來(lái)進(jìn)行?GBK?編碼和解碼,也可以使用?encodeURIComponent?函數(shù)對(duì)字符串進(jìn)行編碼,最好使用第三方庫(kù),比如iconv-lite來(lái)實(shí)現(xiàn)2023-12-12錯(cuò)誤剖析之JavaScript的9個(gè)陷阱及評(píng)點(diǎn)
錯(cuò)誤剖析之JavaScript的9個(gè)陷阱及評(píng)點(diǎn)...2007-08-08微信小程序?qū)W習(xí)筆記之跳轉(zhuǎn)頁(yè)面、傳遞參數(shù)獲得數(shù)據(jù)操作圖文詳解
這篇文章主要介紹了微信小程序?qū)W習(xí)筆記之跳轉(zhuǎn)頁(yè)面、傳遞參數(shù)獲得數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了微信小程序基于navigator組件的頁(yè)面跳轉(zhuǎn)及數(shù)據(jù)傳遞相關(guān)操作技巧,并結(jié)合圖文形式進(jìn)行詳細(xì)說(shuō)明,需要的朋友可以參考下2019-03-03javascript:;與javascript:void(0)使用介紹
有時(shí)候我們?cè)诰帉?xiě)js過(guò)程中,需要觸發(fā)事件而不需要返回值,那么就可能需要這樣的寫(xiě)法2013-06-06使用phantomjs進(jìn)行網(wǎng)頁(yè)抓取的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用phantomjs進(jìn)行網(wǎng)頁(yè)抓取的實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-09-09JS判斷數(shù)組里是否有重復(fù)元素的方法小結(jié)
這篇文章主要介紹了JS判斷數(shù)組里是否有重復(fù)元素的方法,結(jié)合實(shí)例形式分析了javascript針對(duì)數(shù)組重復(fù)元素判斷相關(guān)的遍歷、排序、遞歸等相關(guān)操作技巧,需要的朋友可以參考下2019-05-05