亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何在JavaScript實現(xiàn)Blob文件流下載

 更新時間:2024年05月07日 08:24:16   作者:沈清秋.  
在JavaScript中可以使用瀏覽器提供的Blob對象和URL.createObjectURL()方法來實現(xiàn)文件流下載,這篇文章主要給大家介紹了關于如何在JavaScript實現(xiàn)Blob文件流下載的相關資料,需要的朋友可以參考下

一、下載

在 JavaScript 中,可以使用瀏覽器提供的 Blob 對象和 URL.createObjectURL() 方法來實現(xiàn)文件流下載。

下面是一個示例代碼,可以幫助了解如何在 JavaScript 中實現(xiàn)文件流下載:

function downloadFile(data, filename, type) {
    // 創(chuàng)建 Blob 對象
    const blob = new Blob([data], { type: type });

    // 判斷當前瀏覽器是否是IE,由于IE是沒有download 方法的,需要用msSaveBlob() 或 msSaveOrOpenBlob()
    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        // 兼容IE
        window.navigator.msSaveOrOpenBlob(blob, filename)
    } else {
        // 創(chuàng)建 URL 對象
        const url = URL.createObjectURL(blob);

        // 創(chuàng)建鏈接
        const link = document.createElement('a');
        link.href = url;
        link.download = filename;

        // 模擬點擊鏈接進行下載
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);

        // 釋放 URL 對象
        URL.revokeObjectURL(url);
    }
}

在這個示例中,我們定義了一個 downloadFile() 函數(shù),這個函數(shù)接受三個參數(shù):data、filename 和 type。其中,data 表示要下載的數(shù)據(jù)流,filename 表示要保存的文件名,type 表示要下載的文件類型。

在函數(shù)中,我們首先使用 Blob 對象創(chuàng)建一個二進制數(shù)據(jù)流,然后使用 URL.createObjectURL() 方法創(chuàng)建一個 URL 對象。接著,我們創(chuàng)建一個鏈接元素,并將這個鏈接元素的 href 屬性設置為 URL 對象的 URL,將 download 屬性設置為要保存的文件名。最后,我們模擬點擊鏈接元素,啟動下載操作。

當下載完成后,我們需要釋放 URL 對象,以便瀏覽器可以回收這個對象的內(nèi)存。這個操作可以使用 URL.revokeObjectURL()方法來實現(xiàn)。

注意:IE中要使用window.navigator.msSaveOrOpenBlob 或 window.navigator.msSaveBlob來處理Blob對象
用法:

1.msSaveOrOpenBlob:提供保存和打開按鈕

2.msSaveBlob:只提供一個保存按鈕

二、請求

在使用axios請求的時候,加上responseType: 'blob'入?yún)ⅰU埱笫纠缦拢?/p>

axios({
  // 請求頭  
  headers: {
      Content-Type: 'application/json;charset=utf-8'  
  },
  responseType: 'blob', // // `responseType` 表示瀏覽器將要響應的數(shù)據(jù)類型,選項有'arraybuffer', 'document', 'json', 'text', 'stream',瀏覽器專屬:'blob',默認是'json'
  method: 'get', // 類型根據(jù)實際接口是get還是post
  url: '接口URL',
  params: {}, // URL參數(shù)
});

因為我們使用的是文件流下載,所以返回的響應對象就不是 json 類型,要換成 blob 類型.

三、示例

以下載excel為例:

axios({
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  },
  responseType: 'blob',
  method: 'get',
  url: '#',
  params: {}
}).then(res => {
  downloadFile(res, '文件名稱','application/xlsx')
})

實際根據(jù)請求的方法換成是get請求還是post請求,下載不同的文件對應不同的 Blob 類型,這邊excel文件下載用的是 application/xlsx,如果是下載別的類型的文件就換別的類型。

Blob相關的文檔可自行查看鏈接:

https://developer.mozilla.org/zh-CN/docs/Web/API/Blob/type

總結

到此這篇關于如何在JavaScript實現(xiàn)Blob文件流下載的文章就介紹到這了,更多相關JS Blob文件流下載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript字符串常用類使用方法匯總

    JavaScript字符串常用類使用方法匯總

    今天的這篇文章就分享幾年以來總結的一些最常見和最有用的字符串相關的方法的例子和簡要說明。便于程序員用于快速參考。當然,最有經(jīng)驗的開發(fā)人員對這些操作很熟悉,但我認為這是一個很好的方法幫助初學者理解這些函數(shù),他可以幫助你使用簡單的語法,完成復雜的操作.
    2015-04-04
  • 全面解析Javascript無限添加QQ好友原理

    全面解析Javascript無限添加QQ好友原理

    這篇文章主要介紹了全面解析Javascript無限添加QQ好友原理的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • javascript中style.left和offsetLeft的用法說明

    javascript中style.left和offsetLeft的用法說明

    本篇文章主要是對javascript中style.left和offsetLeft的用法進行了說明介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03
  • 利用JS實現(xiàn)簡單的日期選擇插件

    利用JS實現(xiàn)簡單的日期選擇插件

    這篇文章主要介紹了利用JS實現(xiàn)簡單的日期選擇插件,文中實現(xiàn)兩種效果的日期選擇,一種是默認參數(shù),點擊日期后直接選擇該日期,另一種是顯示按鈕來設置時間,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • JS獲取當前網(wǎng)頁大小以及屏幕分辨率等

    JS獲取當前網(wǎng)頁大小以及屏幕分辨率等

    這篇文章主要介紹了JS獲取當前網(wǎng)頁大小以及屏幕分辨率等,方法雖簡單,但比較實用,需要的朋友可以參考下
    2014-09-09
  • 第十章之巨幕頁頭縮略圖與警告框組件

    第十章之巨幕頁頭縮略圖與警告框組件

    Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它簡潔靈活,使得 Web 開發(fā)更加快捷。本文給大家介紹BootStrap組件第十章之巨幕頁頭縮略圖和警告框組件 的相關資料,需要的朋友可以參考下
    2016-04-04
  • 如何使用CocosCreator對象池

    如何使用CocosCreator對象池

    這篇文章主要介紹了CocosCreator對象池,對性能有研究的同學,要著重看一下
    2021-04-04
  • 淺析JS給原始數(shù)據(jù)類型加屬性和方法為什么不報錯

    淺析JS給原始數(shù)據(jù)類型加屬性和方法為什么不報錯

    這篇文章主要想和大家一起探討一下JavaScript中給原始數(shù)據(jù)類型添加屬性和方法為什么不報錯,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2023-11-11
  • 微信小程序自定義彈出模態(tài)框禁止底部滾動功能

    微信小程序自定義彈出模態(tài)框禁止底部滾動功能

    這篇文章主要介紹了微信小程序自定義彈出模態(tài)框禁止底部滾動效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Bootstrap教程JS插件彈出框學習筆記分享

    Bootstrap教程JS插件彈出框學習筆記分享

    這篇文章主要為大家分享了Bootstrap教程JS插件彈出框學習筆記,為大家詳細介紹Bootstrap彈出框的使用方法,感興趣的小伙伴們可以參考一下
    2016-05-05

最新評論