摘要:以上代碼在瀏覽器中,均可以成功下載文件,但是在中,會(huì)報(bào)錯(cuò)。如下拒絕訪問(wèn)造成以上原因是在中使用生成的是不帶域名的鏈接,如下而等瀏覽器生成的是帶域名的,如下所以在下通過(guò)標(biāo)簽的來(lái)下載是不行的。解決方法使用,代替。
我們先來(lái)看一份代碼
function download(content, filename) { // 字符內(nèi)容轉(zhuǎn)變成blob地址 var blob = new Blob([content]); var eleLink = document.createElement("a"); eleLink.download = filename; $(eleLink).css("display", "none"); eleLink.href = URL.createObjectURL(blob); document.body.appendChild(eleLink); eleLink.click(); document.body.removeChild(eleLink); };
上面的代碼的意思是先用blob把字符串內(nèi)容轉(zhuǎn)變成blob鏈接,然后利用a標(biāo)簽自帶的下載功能把內(nèi)容下載下來(lái)。
以上代碼在Chrome、Firefox、Safari、360、EdgeHtml瀏覽器中,均可以成功下載文件,但是在Edge中,會(huì)報(bào)錯(cuò)。如下:
造成以上原因是在Edge中使用Blob生成的是不帶域名的blob鏈接,如下:
而chrome等瀏覽器生成的是帶域名的,如下:
所以在edge下通過(guò)a標(biāo)簽的href來(lái)下載是不行的。
解決方法使用 window.navigator.msSaveOrOpenBlob(blob, filename),代替 window.URL.createObjectURL。
上代碼:
function download(content, filename) { // 字符內(nèi)容轉(zhuǎn)變成blob地址 var blob = new Blob([content]); if("msSaveOrOpenBlob" in navigator){ window.navigator.msSaveOrOpenBlob(blob, filename); return; } var eleLink = document.createElement("a"); eleLink.download = filename; $(eleLink).css("display", "none"); eleLink.href = URL.createObjectURL(blob); document.body.appendChild(eleLink); eleLink.click(); document.body.removeChild(eleLink); };
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/108565.html
摘要:出于安全考慮,無(wú)法直接調(diào)用寫(xiě)文件到磁盤(pán),但是卻可以通過(guò)下載來(lái)變相實(shí)現(xiàn)保存功能。生成文件并下載是一種逗號(hào)分隔的表格文件格式,可以很好的被支持,由于其文件格式簡(jiǎn)單,所以經(jīng)常用在簡(jiǎn)單的表格上面。 出于安全考慮,JS無(wú)法直接調(diào)用FileAPI寫(xiě)文件到磁盤(pán),但是卻可以通過(guò)下載來(lái)變相實(shí)現(xiàn)保存功能。JS要實(shí)現(xiàn)下載功能,一般都是這么幾個(gè)過(guò)程:生成下載的URL,動(dòng)態(tài)創(chuàng)建一個(gè)A標(biāo)簽,并將其href指向生成...
摘要:?jiǎn)栴}以上兩種方式,當(dāng)在下載格式,或者視頻文件時(shí),瀏覽器會(huì)直接播放該文件,而達(dá)不到直接下載的功能,此時(shí),當(dāng)下載音視頻文件時(shí)無(wú)法使用以上兩種方式。 1、通過(guò)window.open()打開(kāi)新頁(yè)面下載文件 window.open(`url`, _self) 使用場(chǎng)景:下載excel文件,后端提供接口,接口返回的是文件流,可以直接使用window.open(),最簡(jiǎn)單的方式。 優(yōu)點(diǎn):最簡(jiǎn)潔; 弊...
摘要:場(chǎng)景簡(jiǎn)介由于業(yè)務(wù)需要,經(jīng)常遇到下載各類(lèi)文件的需求,其中最頭疼的莫過(guò)于前端下載圖片了,直接給個(gè)圖片文件地址會(huì)變成直接打開(kāi)圖片,而不是彈窗提示另存為,研究了下前端實(shí)現(xiàn)文件下載最便捷的方法還是創(chuàng)建標(biāo)簽,寫(xiě)入屬性實(shí)現(xiàn)點(diǎn)擊下載,但這在瀏覽器上的實(shí)現(xiàn)又 場(chǎng)景簡(jiǎn)介 由于業(yè)務(wù)需要,經(jīng)常遇到下載各類(lèi)文件的需求,其中最頭疼的莫過(guò)于前端下載圖片了,直接給個(gè)圖片文件地址會(huì)變成直接打開(kāi)圖片,而不是彈窗提示另存為...
摘要:前言將數(shù)據(jù)報(bào)表導(dǎo)出,是數(shù)據(jù)報(bào)告展示常用的附帶功能。今天我們主要講的是直接通過(guò)前端將數(shù)據(jù)導(dǎo)出的格式的文件。但其實(shí)真正的答案應(yīng)該是把相應(yīng)的數(shù)據(jù)轉(zhuǎn)換成和。若是超過(guò)瀏覽器自身限制的最大長(zhǎng)度,會(huì)導(dǎo)致下載失敗。 前言 將數(shù)據(jù)報(bào)表導(dǎo)出,是web數(shù)據(jù)報(bào)告展示常用的附帶功能。通常這種功能都是用后端開(kāi)發(fā)人員編寫(xiě)的。今天我們主要講的是直接通過(guò)前端js將數(shù)據(jù)導(dǎo)出Excel的CSV格式的文件。 原理 首先在本地...
閱讀 3802·2021-11-23 09:51
閱讀 2143·2021-11-16 11:42
閱讀 3432·2021-11-08 13:20
閱讀 1222·2019-08-30 15:55
閱讀 2282·2019-08-30 10:59
閱讀 1340·2019-08-29 14:04
閱讀 1230·2019-08-29 12:41
閱讀 2326·2019-08-26 12:22