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

vue如何從后臺下載.zip壓縮包文件

 更新時間:2022年09月22日 09:50:46   作者:sqwu  
這篇文章主要介紹了vue如何從后臺下載.zip壓縮包文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue前后端分離,使用element的el-button組件從后臺下載文件,并且解決亂碼問題 

1.添加下載按鈕

2.(原始方法,會出現(xiàn)亂碼)給按鈕添加點擊事件

添加接口代碼

 download: function() {
      const row = this.tableRadio
      // console.log(row)
      axios.get('/api/download', {
        params: {
          reportRuleId: row.reportRuleId
        }
        
      }).then(response => {
        console.log(response.data);
      }).catch(error => { this.$message.error(error) })
}

一直使用的是axios.get()這種請求方式,可以訪問后臺,但是返回的是一堆亂碼

3.(更正版)用axios({})這種方式

配置參數(shù):

  • 根據(jù)返回的類型response.data.type,如果是文件流application/octet-stream則下載文件,如果是json則顯示錯誤信息;
  • 文件名來自http頭部的Content-Disposition字段;

axios({
        method: 'GET',
        url: '/api/download',
        params: {
          reportRuleId: row.reportRuleId
        },
        responseType: 'blob'
      }).then(response => {
       if (response.data.type === 'application/octet-stream') {
        // 獲取http頭部的文件名信息,若無需重命名文件,將下面這行刪去
        const fileName = response.headers['content-disposition'].split('=')[1]
        /* 兼容ie內(nèi)核,360瀏覽器的兼容模式 */
        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
          const blob = new Blob([response.data], { type: 'application/zip' })
          window.navigator.msSaveOrOpenBlob(blob, fileName)
        } else {
          /* 火狐谷歌的文件下載方式 */
          const blob = new Blob([response.data], { type: 'application/zip' })
          const url = window.URL.createObjectURL(blob)
          const link = document.createElement('a') // 創(chuàng)建a標簽
          link.href = url
          link.download = fileName // 文件重命名,若無需重命名,將該行刪去
          link.click()
          URL.revokeObjectURL(url) // 釋放內(nèi)存
        }
        resolve(response)
      } else {
        const reader = new FileReader()
        reader.onload = function(event) {
          const msg = JSON.parse(reader.result).data
          _this.$errorMsg(message) // 將錯誤信息顯示出來
        }
        reader.readAsText(response.data)
      }
      }).catch(error => _this.$errorMsg(error) )

這樣就可以成功下載到.zip文件

4.報跨域問題

經(jīng)過排查,我這邊產(chǎn)生這個問題的原因是參數(shù)格式,如下圖,我的參數(shù)存在一個JOSN字符串,導(dǎo)致報錯

解決辦法:

使用qs模塊將params參數(shù)格式轉(zhuǎn)換一下 ,將下面這行代碼放在params后面

paramsSerializer: params => { return qs.stringify(params, { arrayFormat: 'brackets' }) }

type:'application/zip'可以更改下載文件的類型

具體有以下這些類型:

'doc'??????? => 'application/msword',
??? 'bin'??????? => 'application/octet-stream',
??? 'exe'??????? => 'application/octet-stream',
??? 'so'??????? => 'application/octet-stream',
??? 'dll'??????? => 'application/octet-stream',
??? 'pdf'??????? => 'application/pdf',
??? 'ai'??????? => 'application/postscript',
??? 'xls'??????? => 'application/vnd.ms-excel',
??? 'ppt'??????? => 'application/vnd.ms-powerpoint',
??? 'dir'??????? => 'application/x-director',
??? 'js'??????? => 'application/x-javascript',
??? 'swf'??????? => 'application/x-shockwave-flash',
??? 'xhtml'??????? => 'application/xhtml+xml',
??? 'xht'??????? => 'application/xhtml+xml',
??? 'zip'??????? => 'application/zip',
??? 'mid'??????? => 'audio/midi',
??? 'midi'??????? => 'audio/midi',
??? 'mp3'??????? => 'audio/mpeg',
??? 'rm'??????? => 'audio/x-pn-realaudio',
??? 'rpm'??????? => 'audio/x-pn-realaudio-plugin',
??? 'wav'??????? => 'audio/x-wav',
??? 'bmp'??????? => 'image/bmp',
??? 'gif'??????? => 'image/gif',
??? 'jpeg'??????? => 'image/jpeg',
??? 'jpg'??????? => 'image/jpeg',
??? 'png'??????? => 'image/png',
??? 'css'??????? => 'text/css',
??? 'html'??????? => 'text/html',
??? 'htm'??????? => 'text/html',
??? 'txt'??????? => 'text/plain',
??? 'xsl'??????? => 'text/xml',
??? 'xml'??????? => 'text/xml',
??? 'mpeg'??????? => 'video/mpeg',
??? 'mpg'??????? => 'video/mpeg',
??? 'avi'??????? => 'video/x-msvideo',
??? 'movie'??????? => 'video/x-sgi-movie',??

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue keep-alive 動態(tài)刪除組件緩存的例子

    vue keep-alive 動態(tài)刪除組件緩存的例子

    今天小編就為大家分享一篇vue keep-alive 動態(tài)刪除組件緩存的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue實現(xiàn)四級導(dǎo)航及驗證碼的方法實例

    vue實現(xiàn)四級導(dǎo)航及驗證碼的方法實例

    我們在做項目經(jīng)常會遇到多級導(dǎo)航這個需求,所以下面這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)四級導(dǎo)航及驗證碼的相關(guān)資料,文章通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-07-07
  • Vue 3.x+axios跨域方案的踩坑指南

    Vue 3.x+axios跨域方案的踩坑指南

    這篇文章主要給大家介紹了關(guān)于Vue 3.x+axios跨域方案的踩坑指南,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Vue 3.x具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Vue中的slot使用插槽分發(fā)內(nèi)容的方法

    Vue中的slot使用插槽分發(fā)內(nèi)容的方法

    這篇文章主要介紹了Vue中的slot使用插槽分發(fā)內(nèi)容的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 使用Vue3進行數(shù)據(jù)綁定及顯示列表數(shù)據(jù)

    使用Vue3進行數(shù)據(jù)綁定及顯示列表數(shù)據(jù)

    這篇文章主要介紹了使用Vue3進行數(shù)據(jù)綁定及顯示列表數(shù)據(jù),整篇文章圍繞Vue3進行數(shù)據(jù)綁定及顯示列表數(shù)據(jù)的想換自來哦展開內(nèi)容,需要的小伙伴可以參考一下
    2021-10-10
  • vue+axios+java實現(xiàn)文件上傳功能

    vue+axios+java實現(xiàn)文件上傳功能

    這篇文章主要為大家詳細介紹了vue+axios+java實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • vue對枚舉值轉(zhuǎn)換方式

    vue對枚舉值轉(zhuǎn)換方式

    這篇文章主要介紹了vue對枚舉值轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue elementui el-table 表格里邊展示四分位圖效果(功能實現(xiàn))

    vue elementui el-table 表格里邊展示四分位圖效果(功能實現(xiàn))

    這篇文章主要介紹了vue elementui el-table 表格里邊展示四分位圖效果(功能實現(xiàn)),本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-04-04
  • vue2.* element tabs tab-pane 動態(tài)加載組件操作

    vue2.* element tabs tab-pane 動態(tài)加載組件操作

    這篇文章主要介紹了vue2.* element tabs tab-pane 動態(tài)加載組件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vuex實現(xiàn)歷史記錄的示例代碼

    vuex實現(xiàn)歷史記錄的示例代碼

    這篇文章主要介紹了vuex實現(xiàn)歷史記錄的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評論

繁峙县| 柳河县| 内乡县| 廉江市| 宜黄县| 双流县| 吴川市| 兴宁市| 武邑县| 辽宁省| 聂拉木县| 内黄县| 乌兰县| 五寨县| 莲花县| 安新县| 嘉义县| 融水| 新巴尔虎右旗| 马山县| 四川省| 德化县| 吉水县| 柯坪县| 盐亭县| 阳城县| 上蔡县| 兴仁县| 河间市| 天长市| 常宁市| 固原市| 清远市| 潞西市| 翼城县| 延吉市| 射阳县| 乐平市| 汝州市| 剑川县| 宁陕县|