zoukankan      html  css  js  c++  java
  • vue使jsZip和FileSaver.js打包下载

    安装

    npm install jszip
    npm install file-saver --save
    

    在组件中

    import JSZip from 'jszip'
    import FileSaver from "file-saver"
    //调用
    this.filesToRar(this.imgList,"学生涂鸦答题照片");
    /**文件打包
    *@param {object} arrImages 文件list:[ { url:文件url , title:文件名 } ]
    *@param {string} filename 压缩包的名字
    **/
    filesToRar(arrImages, filename) {
        let _this = this;
        let zip = new JSZip();
        let cache = {};
        let promises = [];
        let i = 0;
        arrImages.forEach((item)=>{
            var promise = _this.getImgArrayBuffer(item.url).then(data => {
                i++;
                let name = "(" + i + ")" + item.title + ".png";
                // 下载文件, 并存成ArrayBuffer对象(blob)
                zip.file(name, data, { binary: true }); // 逐个添加文件
                cache[name] = data;
            });
            promises.push(promise);
        })
        Promise.all(promises).then(() => {
            zip.generateAsync({ type: "blob" }).then(content => {
                // 生成二进制流
                FileSaver.saveAs(content, filename); // 利用file-saver保存文件  自定义文件名
            });
        })
        .catch(res=>{
            console.log("压缩失败")
        });
    }
    
    /**通过url获取文件blob
    *@param {string} url 图片http路径
    **/
    getImgArrayBuffer(url){
        return new Promise((resolve, reject) => {
            let xmlhttp = new XMLHttpRequest();
            xmlhttp.open("GET", url, true);
            xmlhttp.responseType = "blob";
            xmlhttp.onload = function () {
                if (this.status == 200) {
                    resolve(this.response);
                }else{
                    reject(this.status);
                }
            }
            xmlhttp.send();
        });
    }
  • 相关阅读:
    Java高级面试题及答案
    Java SQL注入学习笔记
    Java实习生面试题整理
    各大公司Java面试题超详细总结
    Java面试经典题:线程池专题
    Java进阶面试题列表
    最新Java面试题及答案整理
    Java虚拟机(JVM)你只要看这一篇就够了!
    记一次Java的内存泄露分析
    Java线程池详解
  • 原文地址:https://www.cnblogs.com/wlming/p/13969072.html
Copyright © 2011-2022 走看看