美文网首页
vue中实现本地图片打包成.zip文件

vue中实现本地图片打包成.zip文件

作者: 我性本傲 | 来源:发表于2019-05-05 17:50 被阅读0次

<template>

    <div class='demo'>

    <div style="display: none;">

        <img src="../../assets/logo.png"  class="yaojianbaogao" width="50"  data-ordercode="霍痕"  data-title="霍痕1" data-alt="霍痕1.png" >

        <img src="../../assets/logo.png"  class="yaojianbaogao" width="50"  data-ordercode="霍痕"  data-title="霍痕2" data-alt="霍痕2.png" >

        <img src="../../assets/logo.png"  class="yaojianbaogao" width="50"  data-ordercode="霍痕"  data-title="霍痕3" data-alt="霍痕3.png" >

    </div>

        <a href="javascript:;" @click="downloadzip()">打包下载</a>

    </div>

</template>

<script>

import JSZip from 'jszip'

const FileSaver = require('file-saver')

export default {

  data(){

    return{

    }

  },

  methods:{

    downloadzip(){

      var imgs = document.getElementsByClassName('yaojianbaogao')

      console.log(imgs)

      var zip = new JSZip();

      var file_name = '';

      Array.from(imgs).forEach(item => {

        file_name  = item.getAttribute('data-ordercode')+'.zip';

        var img = zip.folder(item.getAttribute('data-title'));

        var imgdata = this.getBase64Image(item.getAttribute('src'));

        var img_arr = imgdata.split(',');

        img.file(item.getAttribute('data-alt'),img_arr[1],{base64: true});

      });

      zip.generateAsync({type:"blob"}).then(function(content) {

          FileSaver.saveAs(content, file_name);

      });

    },

    getBase64Image(images){

      var img = new Image();

      img.src = images;

      var canvas = document.createElement("canvas");

      canvas.width = img.width;

      canvas.height = img.height;

      var ctx = canvas.getContext("2d");

      ctx.drawImage(img, 0, 0, img.width, img.height);

      var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();

      var dataURL = canvas.toDataURL();

      return dataURL;

    }

  }

}

</script>