Skip to content

js实现zip文件的压缩和解压并下载文件

JS实现解压和压缩Zip文件并下载文件

最近正好有使用JS解压和压缩zip文件同时下载文件的需求,故此记录下来

完整代码:

js
import JSZip from "jszip"
import { saveAs } from 'file-saver';


async function downloadFile(){
    // 创建实例
    const zip = new JSZip()

    // 调用responsetype为arrayBuffer的http请求,这里下载的是一个压缩好的zip文件,转化为arrayBuffer响应
    let res5 = await arrayBufferHttp.get("/ladder-gateway/downLoad", {
        unid: fileId,
        userId: this.userId
    })

    // 向zip中写入下载好的压缩包
    zip.loadAsync(res5).then(zip => {}).catch(error => {
        this.$message.error("导出后台服务补丁失败")
    })

    try {
        // 创建一个文件夹test并在其中创建一个demo.js,写入helloworld
        zip.folder('test').file(`demo.js`, 'helloworld')
        // 向已有的test文件夹中创建一个test2文件夹,并写入list.vue、add.vue、detail.vue三个文件
        zip.folder('test').folder('test2').file('list.vue', 'helloworld').file('add.vue', 'helloworld').file('detail.vue', 'helloworld')

        zip.generateAsync({
          type: 'blob'
        }).then(res => {
          // 调用file-saver下载文件
          saveAs(res)
        })
    } catch (error) {
        this.$message.warning("导出失败,请稍后重试")
    }

}

上次更新于: