vue + jsZip 實(shí)現(xiàn)解壓文件并下載到本地

應(yīng)用場景

image.png

點(diǎn)擊下載輕量化后文件,后臺返回的地址是一個存在阿里云的鏈接地址,這邊直接用瀏覽器下載后,是一個zip的壓縮文件

image.png

image.png

但是需求下載后是解壓后的pbim文件,而不是zip,于是想到前端解壓后,在下載到本地

實(shí)現(xiàn)方法

安裝jszip

npm install jszip

點(diǎn)擊下載按鈕,先去阿里云讀取zip的文件信息

     this.$axios({
              method: 'get',
              responseType: 'blob',
              url: fileUrl  // 文件所在阿里云的鏈接地址
            }).then(res => {
              // 把blob格式文件轉(zhuǎn)成FIle類型
              let files = new window.File([res.data], fileName, {type: 'zip'})
              // 讀取zip壓縮文件里面的文件內(nèi)容
              JSZip.loadAsync(files).then((zip) => {
                for (let key in zip.files) {
                // 用blob的格式讀取,方便后面下載到本地
                  let base = zip.file(zip.files[key].name).async('blob')
                  base.then(res => {
                    this.doDownload(res, zip.files[key].name)
                  })
                }
              })
            })

下載到本地

doDownload (data, name) {
        if (!data) {
          return
        }
        let url = window.URL.createObjectURL(new Blob([data]))
        let link = document.createElement('a')
        link.style.display = 'none'
        link.href = url
        link.setAttribute('download', name)

        document.body.appendChild(link)
        link.click()
      }

下載成功

image.png

這世上本沒有路,踩的坑多了,也變成了路

最后編輯于
?著作權(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)容