侧边栏壁纸
博主头像
seems 博主等级

学习博客

  • 累计撰写 62 篇文章
  • 累计创建 41 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

js批量打包下载

seems
2023-09-01 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

第一步、安装依赖

npm install jszip file-saver

第二步、引入方法:

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

第三步、按钮点击方法

downLoadUrl对象属性: file:下载链接 type: 文件类型

2.依赖方法

getFile(url){
    return new Promise((resolve, reject) => {
      this.axios({
        method:'get',
        url,
        responseType: 'blob'
      }).then(data => {
        resolve(data)
      }).catch(error => {
        reject(error.toString())
      })
    })
},
// 打压缩包下载
## dataUrl:[{url,file_name}]
handleBatchDownload(dataUrl) {
    let _this = this;
    const zip = new JSZip()    // 创建一个JSZip实例
    const cache = {}
    const promises = []
    dataUrl.forEach(item => {
      const promise = _this.getFile(item.url).then(data => { // 下载文件, 并存成ArrayBuffer对象
        let file_name = item.file_name // 获取文件名(数组最后一项)
        zip.file(file_name, data, { binary: true }) // 逐个添加文件
        cache[file_name] = data
      })
      promises.push(promise)
    })
    Promise.all(promises).then(() => {
      zip.generateAsync({type:"blob"}).then(content => { // 生成二进制流
        // 利用file-saver保存文件 _this.fileTableTitle是我压缩包名字
        FileSaver.saveAs(content, _this.title + ".zip")
      })
    })
  }
}  
0

评论区