zoukankan      html  css  js  c++  java
  • Vue 打包下载图片

    1、 npm安装依赖

    
    
     //jszip是一个用于创建、读取和编辑.zip文件的JavaScript库
    https://stuk.github.io/jszip/

    npm install jszip
    https://www.npmjs.com/package/file-saver
    npm install file-saver

    2、在所需页面中引入

    import JSZip from "jszip";
    import FileSaver from "file-saver";

    3、打包

    arrImages:[{fileUrl:'图片地址',renameFileName:'图片名'}]
    filename:'打包名'

    this
    .filesToRar(arrImages, "相册");
        filesToRar(arrImages, filename) {
          let _this = this;
          let zip = new JSZip();
          let cache = {};
          let promises = [];
          let times = 1;
          var setIme = setInterval(() => {
            times++;
            console.log(times);
          }, 1000);
    
          for (let item of arrImages) {
            const promise = _this.getImgArrayBuffer(item.fileUrl).then(data => {
              // 下载文件, 并存成ArrayBuffer对象(blob)
              zip.file(item.renameFileName, data, { binary: true }); // 逐个添加文件
              cache[item.renameFileName] = data;
            });
            promises.push(promise);
          }
          Promise.all(promises)
            .then(() => {
              zip.generateAsync({ type: "blob" }).then(content => {
                // 生成二进制流
                FileSaver.saveAs(content, filename); // 利用file-saver保存文件  自定义文件名
                this.$notify.close();
                this.$notify({
                  message: "压缩完成"
                });
                window.clearInterval(setIme);
              });
            })
            .catch(res => {
              this.$notify({
                  message: "文件压缩失败"
                });
            });
        },
        //获取文件blob
        getImgArrayBuffer(url) {
          let _this = this;
          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里if...else语句
    Java里for循环和增强版循环;break语句:跳出循环;continue:跳转循环
    Java里while循环和do...while循环
    static 修饰符
    Java类变量(静态变量)
    Java实例变量
    Java局部变量
    Java访问实例变量和调用成员方法
    Java里import语句使用
    声明式服务调用
  • 原文地址:https://www.cnblogs.com/wangshishuai/p/13144019.html
Copyright © 2011-2022 走看看