国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端 JS 經(jīng)典:文件流下載

這篇具有很好參考價(jià)值的文章主要介紹了前端 JS 經(jīng)典:文件流下載。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

重點(diǎn):調(diào)用接口時(shí),一定要配置 responseType 的值為 blob,不然獲取的文件流,不會(huì)轉(zhuǎn)義成 blob 類型的文件。文章來源地址http://www.zghlxwxcb.cn/news/detail-777293.html

1. 接口返回文件流

// BLOB (binary large object)----二進(jìn)制大對(duì)象,是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器
// 下載接口:重點(diǎn)responseType: "blob"
// 返回體 res blob 文件流
function downloadFile(params) {
  return api({
    url: "/download/file",
    method: "get",
    params,
    responseType: "blob",
  });
}

2. 文件流下載:簡單版

/**
 * 下載函數(shù)
 * @param {string} data - 后端獲取的文件流
 * @param {string} name - 文件名
 */
function downloadFile(data, name) {
  const blob = new Blob([data]);
  const url = window.URL.createObjectURL(blob);
  const a = document.createElement("a");
  a.href = url;
  a.download = name;
  document.body.appendChild(a);
  a.style.display = "none";
  a.click();
  document.body.removeChild(a);
}

3. 文件流下載:豪華版

/**
 * 全面優(yōu)化下載函數(shù)
 */
function downloadFile(res) {
  // 判斷是否接口調(diào)用是否正常返回文件流
  const r = new FileReader();
  r.readAsText(res.data);
  r.onload = () => {
    try {
      // 報(bào)錯(cuò),未返回
      const resData = JSON.parse(r.result);
    } catch (err) {
      // 正常,開始轉(zhuǎn)換文件流
      // 正常情況,瀏覽器不返回字段為 content-disposition 的請(qǐng)求頭,
      // 需要后端特殊聲明下,才拿得到,response.setHeader("Access-Control-Expose-Headers","Content-Disposition");
      const name = res.headers["content-disposition"];
      const fileName = name.split("=")[1];
      // 解碼
      filename = decodeURIComponent(fileName);
      // 兼容ie11
      if (window.navigator.msSaveOrOpenBlob) {
        try {
          const blobObject = new Blob([res.data]);
          window.navigator.msSaveOrOpenBlob(blobObject, fileName);
        } catch (e) {
          console.log(e);
        }
        return;
      }
      // a標(biāo)簽實(shí)現(xiàn)下載
      const url = window.URL.createObjectURL(new Blob([res.data]));
      const a = document.createElement("a");
      a.style.display = "none";
      a.href = url;
      a.download = filename;
      document.body.appendChild(a);
      a.click();
      resolve(fileName);
      document.body.removeChild(a);
    }
  };
}

到了這里,關(guān)于前端 JS 經(jīng)典:文件流下載的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端用 js-file-download組件下載后端返回的pdf,word,excel文件

    后端返回的pdf,word,excel的文件流導(dǎo)出需要讓瀏覽器下載文件 1、安裝js-file-download組件 2、在對(duì)應(yīng)的頁面引用 3、在接口返回結(jié)果后直接調(diào)用即可

    2024年02月08日
    瀏覽(93)
  • 前端 JS 經(jīng)典:apply、call、bind

    1. 概念 都是用來改變函數(shù)中 this 指向的。區(qū)別在于 apply、call 傳參方式不一樣,調(diào)用后,直接執(zhí)行函數(shù)。bind 調(diào)用后,返回一個(gè)函數(shù)體,不直接執(zhí)行函數(shù)。 2. 為什么用 那為什么要改變 this 指向呢。正常情況下,誰調(diào)用函數(shù) this 就指向誰。那調(diào)用這個(gè)函數(shù)的那個(gè)誰,要訪問另一

    2024年02月07日
    瀏覽(28)
  • 前端經(jīng)典面試題 | 吊打面試官系列 之 說說你對(duì)TypeScript 和 JavaScript的理解

    ??? 前端經(jīng)典面試題 專欄:吊打面試官系列 之 說說你對(duì)TypeScript 和 JavaScript的理解 ????? 個(gè)人簡介:一個(gè)不甘平庸的平凡人?? ? 個(gè)人主頁:CoderHing的個(gè)人主頁 ?? 格言: ?? 路漫漫其修遠(yuǎn)兮,吾將上下而求索?? ?? 你的一鍵三連是我更新的最大動(dòng)力?? 目錄 一、回答

    2024年01月17日
    瀏覽(39)
  • jQuery.js - 前端必備的Javascript庫

    jQuery.js - 前端必備的Javascript庫

    作者: WangMin 格言: 努力做好自己喜歡的每一件事 jQuery.js 是什么? jQuery是一個(gè)快速簡潔、免費(fèi)開源易用的JavaScript框架, 倡導(dǎo)寫更少的代碼,做更多的事情 。它封裝JavaScript常用的功能代碼,提供了一種簡便的JavaScript設(shè)計(jì)模式,以及我們開發(fā)中常用到的操作DOM的API,優(yōu)化HTML文

    2024年02月05日
    瀏覽(87)
  • web前端框架JS學(xué)習(xí)之JavaScript類型轉(zhuǎn)換

    web前端框架JS學(xué)習(xí)之JavaScript類型轉(zhuǎn)換

    vascript有多種數(shù)據(jù)類型,如字符串、數(shù)字、布爾等,可以通過typeof語句來查看變量的數(shù)據(jù)類型。數(shù)據(jù)類型轉(zhuǎn)換就是數(shù)據(jù)類型之間相互轉(zhuǎn)換,比如把數(shù)字轉(zhuǎn)成字符串、把布爾值轉(zhuǎn)成字符串、把字符串轉(zhuǎn)成數(shù)字等,這在工作也是經(jīng)常碰到的。 本期我們就給大家說說web前端框架JS學(xué)

    2024年02月10日
    瀏覽(86)
  • 【前端靈魂腳本語言JavaScript⑤】——JS中數(shù)組的使用

    【前端靈魂腳本語言JavaScript⑤】——JS中數(shù)組的使用

    ?? 作者: 阿偉 ?? 個(gè)人主頁: Flyme awei ?? 希望大家多多支持??一起進(jìn)步呀! ?? 文章對(duì)你有幫助??關(guān)注?點(diǎn)贊??收藏?? 第一種: var 數(shù)組名 = new Array(); 創(chuàng)建一個(gè)空數(shù)組 第二種: var arr2 = new Array(10); 創(chuàng)建一個(gè)定長為10的數(shù)組 第三種 var arr3 = new Array(a,b,c); 創(chuàng)建時(shí)直接指定元素值

    2023年04月08日
    瀏覽(108)
  • 〖大前端 - 基礎(chǔ)入門三大核心之JS篇?〗- JavaScript 的「數(shù)組」

    〖大前端 - 基礎(chǔ)入門三大核心之JS篇?〗- JavaScript 的「數(shù)組」

    當(dāng)前子專欄 基礎(chǔ)入門三大核心篇 是免費(fèi)開放階段 。 推薦他人訂閱,可獲取扣除平臺(tái)費(fèi)用后的35%收益,文末名片加V! 說明:該文屬于 大前端全棧架構(gòu)白寶書專欄, 目前階段免費(fèi)開放 , 購買任意白寶書體系化專欄可加入 TFS-CLUB 私域社區(qū)。 福利:除了通過訂閱\\\"白寶書系列專

    2024年02月04日
    瀏覽(22)
  • 【前端|Javascript第5篇】全網(wǎng)最詳細(xì)的JS的內(nèi)置對(duì)象文章!

    【前端|Javascript第5篇】全網(wǎng)最詳細(xì)的JS的內(nèi)置對(duì)象文章!

    前言 在當(dāng)今數(shù)字時(shí)代,前端技術(shù)正日益成為塑造用戶體驗(yàn)的關(guān)鍵。我們?cè)陂_發(fā)中需要用到很多js的內(nèi)置對(duì)象的一些屬性來幫助我們更快速的進(jìn)行開發(fā)?;蛟S你是剛踏入前端領(lǐng)域的小白,或者是希望深入了解內(nèi)置對(duì)象的開發(fā)者,不論你的經(jīng)驗(yàn)如何,本篇博客都將給你詳細(xì)的講解

    2024年02月12日
    瀏覽(57)
  • [前端系列第3彈]JS入門教程:從零開始學(xué)習(xí)JavaScript

    本文將帶領(lǐng)大家,從零開始學(xué)習(xí)JavaScript,fighting~ 目錄 一、JavaScript簡介 二、變量和數(shù)據(jù)類型 三、注釋和分號(hào) 四、算術(shù)運(yùn)算符 五、表達(dá)式和語句 六、代碼塊和作用域 七、函數(shù)(最重要)? ????????JavaScript(簡稱JS)是一種運(yùn)行在瀏覽器中的腳本語言,它可以讓網(wǎng)頁變得

    2024年02月13日
    瀏覽(93)
  • JavaScript下載excel文件

    JavaScript下載excel文件

    對(duì)于已知地址的目標(biāo)文件,前端可以使用 a標(biāo)簽 來直接下載,使用a標(biāo)簽下載使用到兩個(gè)屬性 download :下載文件名 href :目標(biāo)文件下載鏈接 使用時(shí)給觸發(fā)的div綁定事件 a標(biāo)簽的下載只能使用get請(qǐng)求,且無法在請(qǐng)求體中添加header信息 請(qǐng)求方法可用post或者get,responseType一般需要設(shè)

    2024年02月10日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包