最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript前端下載后臺傳來的文件流代碼實例

 更新時間:2020年08月18日 15:58:37   作者:niniHan  
這篇文章主要介紹了Javascript前端下載后臺傳來的文件流代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

前臺請求數(shù)據(jù):

url: '/app/downloadApp',
 method: 'get',
 responseType: 'blob',
 params: data

設(shè)置接收參數(shù)格式為responseType: ‘blob',

downloadFile(res, fileName) {
   if (!res) {
    return
   }
   if (window.navigator.msSaveBlob) { // IE以及IE內(nèi)核的瀏覽器
    try {
     window.navigator.msSaveBlob(res, fileName) // res為接口返回數(shù)據(jù),這里請求的時候已經(jīng)處理了,如果沒處理需要在此之前自行處理var data = new Blob([res.data]) 注意這里需要是數(shù)組形式的,fileName就是下載之后的文件名
     // window.navigator.msSaveOrOpenBlob(res, fileName); //此方法類似上面的方法,區(qū)別可自行百度
    } catch (e) {
     console.log(e)
    }
   } else {
    let url = window.URL.createObjectURL(new Blob([res]))
    let link = document.createElement('a')
    link.style.display = 'none'
    link.href = url
    link.setAttribute('download', fileName)// 文件名
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link) // 下載完成移除元素
    window.URL.revokeObjectURL(url) // 釋放掉blob對象
   }
 },
 download(){
   var data = {
    appId:this.appId
   }
   downloadAppAjax(data).then(res => {
     const filename = decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1]);
     console.log(filename)
     this.downloadFile(res.data,filename)
   })
  }

這里的downloadAppAjax調(diào)用后臺接口,請求數(shù)據(jù),獲取后臺返回的數(shù)據(jù)沒有文件名,最后發(fā)現(xiàn)在header Content-Disposition屬性里 attachment;filename=app.jpg

所以我們要實現(xiàn)下載自動重命名就需要拿出filename,這里我們使用decodeURI對Content-Disposition屬性值進行解碼,拿到filename:

decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1]);

拿到文件流和文件名后 接收文件流并創(chuàng)建地址

let url =window.URL.createObjectURL(new Blob([res]))

接著利用a標簽進行下載即可。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • js實現(xiàn)文章目錄索引導(dǎo)航(table of content)

    js實現(xiàn)文章目錄索引導(dǎo)航(table of content)

    這篇文章主要介紹了js實現(xiàn)文章目錄索引導(dǎo)航(table of content),需要的朋友可以參考下
    2020-05-05
  • 基于iScroll實現(xiàn)內(nèi)容滾動效果

    基于iScroll實現(xiàn)內(nèi)容滾動效果

    這篇文章主要為大家詳細介紹了基于iScroll實現(xiàn)內(nèi)容滾動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 微信小程序之多文件下載的簡單封裝示例

    微信小程序之多文件下載的簡單封裝示例

    本篇文章主要介紹了微信小程序之多文件下載的簡單封裝示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 用javascript實現(xiàn)的仿Flash廣告圖片輪換效果

    用javascript實現(xiàn)的仿Flash廣告圖片輪換效果

    用javascript實現(xiàn)的仿Flash廣告圖片輪換效果...
    2007-04-04
  • 如何使用JavaScript快速創(chuàng)建一個1到100的數(shù)組

    如何使用JavaScript快速創(chuàng)建一個1到100的數(shù)組

    平時寫代碼時,我們會生產(chǎn)一些測試用的數(shù)組數(shù)據(jù),比如[1,100]的數(shù)組值,下面這篇文章主要給大家介紹了關(guān)于如何使用JavaScript快速創(chuàng)建一個1到100數(shù)組的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • javascript中創(chuàng)建對象的三種常用方法

    javascript中創(chuàng)建對象的三種常用方法

    在javascript中創(chuàng)建對象的三種方法,腳本之家以前發(fā)布過有簡單實例版的,大家可以參考下。
    2010-12-12
  • 微信小程序?qū)崿F(xiàn)一鍵回到頂部功能

    微信小程序?qū)崿F(xiàn)一鍵回到頂部功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)一鍵回到頂部功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • DOM3中的js textInput文本事件

    DOM3中的js textInput文本事件

    DOM3中引入了文本事件,其中之一 textInput 。當用戶再可編輯區(qū)域輸入字符時觸發(fā)該事件。
    2011-04-04
  • 探索Javascript中this的奧秘

    探索Javascript中this的奧秘

    本文介紹了JavaScript中的this關(guān)鍵字在各種情況下的含義,實例都很簡單,這樣更能有助于加深理解。雖然這只是js中一個很小的概念,但借此我們可以了解js中函數(shù)的執(zhí)行環(huán)境,充分掌握this的相關(guān)知識有助于我們在編寫面向?qū)ο蟮腏avaScript程序時能夠游刃有余。
    2016-12-12
  • js事件流、事件委托與事件階段實例詳解

    js事件流、事件委托與事件階段實例詳解

    事件委托應(yīng)用在很多開發(fā)場景之中,但是很多同學(xué)對委托的原理、特別是對JS原生實現(xiàn)委托不太了解,下面這篇文章主要給大家介紹了關(guān)于js事件流、事件委托與事件階段的相關(guān)資料,需要的朋友可以參考下
    2022-02-02

最新評論

岢岚县| 德清县| 泰安市| 岳普湖县| 延吉市| 顺义区| 龙南县| 招远市| 涡阳县| 抚州市| 龙岩市| 璧山县| 塘沽区| 福贡县| 宣恩县| 宁津县| 姜堰市| 偃师市| 延寿县| 沐川县| 昌图县| 阿瓦提县| 乌鲁木齐市| 深圳市| 进贤县| 海原县| 天柱县| 历史| 洪江市| 拉萨市| 灌南县| 南平市| 巴彦淖尔市| 璧山县| 谷城县| 肇东市| 永吉县| 昭通市| 香格里拉县| 抚松县| 图片|