溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

javascript怎么實現(xiàn)多個任務(wù)一次下載的方法

發(fā)布時間:2020-10-20 16:54:15 來源:億速云 閱讀:210 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)javascript怎么實現(xiàn)多個任務(wù)一次下載的方法的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

真實經(jīng)歷

最近開發(fā)項目需要做文件下載,想想挺簡單的,之前也做過,后臺提供下載接口,前端使用window.location.href就行了唄。不過開發(fā)的時候發(fā)現(xiàn),有些文件有附屬文件,點擊 下載按鈕 需要下載兩個文件,而且不能使用壓縮包的形式。想想不是也挺簡單,點擊 下載 發(fā)送兩個下載請求不就搞定了么。

說干就干,三下五除二就寫好了,當(dāng)點擊 下載 的那一刻懵逼了, 第一個請求竟然自動Cancelled了,頓時一萬個草泥馬崩騰而過(因為是國外服務(wù)器,下載比較慢導(dǎo)致第一個請求被Cancelled),這就意味著快速點擊不同的 下載 按鈕也會有同樣的問題,這不行啊,然后開始了自己的下載探索之旅。

a標(biāo)簽 & location.href

我們知道a標(biāo)簽及href指向的如果是一個下載鏈接,那么相當(dāng)于下載文件,對于單文件下載還是ok的,不過快速點擊幾個下載按鈕,有的下載會被Cancelled,這可不行,繼續(xù)百度。

上一段代碼:

const download = (url)=>{
   window.location.href = url;
}

window.open

我們知道window.open可以打開一個新窗口,那么是不是可以實現(xiàn)下載呢,激動的我趕緊試了試,下載的確可以,不過會快速打開一個新窗口并且關(guān)閉,體驗非常不好,果斷放棄了。

iframe

突然想到iframe也可以向服務(wù)器發(fā)請求的,激動的我又趕緊試了試,哇塞,果然可以下載,而且沒有違和感,代碼貼出來。

export const downloadFile = (url) => {
  const iframe = document.createElement("iframe");
  iframe.style.display = "none"; // 防止影響頁面
  iframe.style.height = 0; // 防止影響頁面
  iframe.src = url; 
  document.body.appendChild(iframe); // 這一行必須,iframe掛在到dom樹上才會發(fā)請求
  // 5分鐘之后刪除(onload方法對于下載鏈接不起作用,就先摳腳一下吧)
  setTimeout(()=>{
    iframe.remove();
  }, 5 * 60 * 1000);
}

ps: iframe不會相互影響,可以連續(xù)下載哦!

其他方案

當(dāng)然還有一些其他方式,F(xiàn)orm下載、二進(jìn)制流下載等,有空的小伙伴自行研究吧!

感謝各位的閱讀!關(guān)于javascript怎么實現(xiàn)多個任務(wù)一次下載的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI