美文网首页
前端实现多个文件同时下载并打包为一个压缩包,里面存放单个文件

前端实现多个文件同时下载并打包为一个压缩包,里面存放单个文件

作者: 瓩千瓦 | 来源:发表于2023-04-11 13:31 被阅读0次

前提:需要先安装jszip和file-saver两个插件

import JSZip from 'jszip'
// eslint-disable-next-line no-unused-vars
import FileSaver from 'file-saver'

export default {
    methods: {
        downloadModel () {
            this.down_Loading = true;
            this.$ajax(apiVcdDownload, arr).then(res => {
                // 返回示例数据
                /* {"resultCode":200,"message":"成功","data":[{"downloadUrl":"https://hz-ota-lvip-oss.oss-cn-hangzhou.aliyuncs.com/lotusResource/5/vbf/lvip/vcd/7eb13311-7a0d-4ff9-823e-974e2ee7bb5d.vbf?Expires=1996566895&OSSAccessKeyId=LTAI5t8Do9zFxQMca7WuvETZ&Signature=uGHTq8RLRLx4Un8d6ZHRg8Fzfo4%3D","fileName":"Lambda_C10_462.vbf"}],"success":true} */
                if (res.resultCode === 200) {
                    const zip = new JSZip()
                    const promises = []
                    res.data?.length && res.data.map((val, idx) => {
                        const { downloadUrl, fileName } = val
                        // get请求方式-返回的文件流
                        const promise = this.$ajax({ ...apiDownloadVBF, responseType: 'blob' }, { downloadUrl, fileName }).then(async data => {
                            // eslint-disable-next-line camelcase
                            await zip.file(fileName, data, { binary: true })
                        })
                        promises.push(promise)
                    })
                    Promise.all(promises).then(() => {
                        zip.generateAsync({ type: 'blob' }).then(content => {
                            // 生成二进制流
                            // FileSaver.saveAs(content, '文件下载.zip') // 利用file-saver保存文件  自定义文件名
                            // eslint-disable-next-line no-undef
                            saveAs(content, formatDate(+new Date()) + '_VCD.zip') // 利用file-saver保存文件  自定义文件名
                            this.$refs.multipleTable.clearSelection()
                            this.down_Loading = false
                        })
                    })
                }
                this.down_Loading = false;
            })
        }
    }
}

相关文章

  • Java实现多文件边压缩边下载

    思路 批量下载文件时,需要将多个文件打包为zip,然后再下载。实现思路有两种:一是将所有文件先打包压缩为一个文件,...

  • Java实现多文件边压缩边下载,

    思路 批量下载文件时,需要将多个文件打包为zip,然后再下载。实现思路有两种:一是将所有文件先打包压缩为一个文件,...

  • 自定义 hook —— useDownload

    基础功能 根据单个链接下载文件到本地 根据多个链接同时下载文件到本地 下载中的状态 state 具体实现代码

  • 01~GEO-数据下载

    prefetch命令下载SRA 下载单个SRA文件 下载多个SRA文件

  • wget下载数据

    下载单个文件 -nc: 继续下载中断的操作 下载目录下面所有文件 下载多个文件:

  • Javajar命令常见用法

    Java jar命令 常见用法 一、jar命令作用: 进行打包 -- 把多个文件打包成一个压缩包 -- 这个压缩包...

  • Android ZIP 打包

    假设 文件/文件夹 分布如下: 可以用递归遍历所有文件并打包,那么压缩包结构为: 如果想维持原来的 文件/文件夹 ...

  • Linux 压缩与解压缩

    在 Linux 中,文件压缩的过程: 待压缩的多个文件 >> 打包成单个文件 >> 文件压缩。 Linux 中常见...

  • jar工具详解

    JAR 简介 JAR(Java Archive)文件格式能够将多个文件打包到单个归档文件中。通常,JAR 文件包含...

  • 51、解决vue项目首页加载过慢的情况(1)

    1.路由懒加载 此方法会把原本打包到一个app.js文件分开成多个js文件打包,这样会减小单个文件的大小,但是不会...

网友评论

      本文标题:前端实现多个文件同时下载并打包为一个压缩包,里面存放单个文件

      本文链接:https://www.haomeiwen.com/subject/wjdwddtx.html