將多個echarts圖片打包zip并下載

首先安裝依賴

npm i jszip
npm i file-saver

在使用的頁面引入依賴包

 import JSZip from 'jszip'
 import FileSaver from 'file-saver'

注意標(biāo)題后面必須加png或jpg 否則圖片無法顯示

  var arr = []
        for (let key in this.charts) {
          if (this.charts[key] != null) {
            arr.push({  
              //圖表文字標(biāo)題
              title: this.charts[key].getOption().title[0].text + ".png",
              // 圖表base64字符串
              base64: this.charts[key].getDataURL({
                // 背景顏色可以自定義
                backgroundColor: '#fff'
              })
            })
          }
        }

遍歷后得到的數(shù)據(jù)結(jié)構(gòu)是這樣
image.png

創(chuàng)建jszip實(shí)例,content是打包后的壓縮文件

     let zip = new JSZip()
     let fileName = "charts-file"
        arr.forEach(item => {
           //打包數(shù)據(jù)
          zip.file(item.title, this.dataUrlFile(item.base64,item.title))
     })
        zip.generateAsync({type: "blob"}).then(content => {
         FileSaver.saveAs(content, fileName); // 利用file-saver保存文件  自定義文件名
     })

最后將base64轉(zhuǎn)碼,

     /**
       * base64轉(zhuǎn)碼
       * url base64編碼
       * fileName 文件名
       * */
      dataUrlFile(url, fileName) {
        var arr = url.split(','), mime = arr[0].match(/:(.*?);/)[1],
          bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
        while (n--) {
          u8arr[n] = bstr.charCodeAt(n);
        }
        return new File([u8arr], fileName, {type: mime});
      },
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容