使用JSZip实现压缩文件与图片

49 篇文章 1 订阅
34 篇文章 2 订阅

JSZip简介

JSZip是一个用于创建、读取和编辑.zip文件的javascript库,有一个可爱而简单的API。JSZip支持Nodejs和浏览器端的安装使用。具体方法如下:

npm install jszip

npm install file-saver

浏览器端解压zip文件

后端Nodejs将zip文件以二进制形式存储到数据库中。当前端需要该zip文件时,后端将zip文件以二进制形式传输到前端,前端再解压还原。

使用JSZip压缩文件

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



var zip = new JSZip();

//创建hello.txt文件,文件内容为Hello World
zip.file("hello.txt", "Hello World\n"); 

//创建一个nested文件夹,文件里里创建一个hello.txt文件,文件内容为Hello World
zip.folder("nested").file("hello.txt", "Hello World\n"); 


zip.generateAsync({type:"blob"}).then(function(content) {
    // 使用file-saver保存下载zip文件
     FileSaver.saveAs(content, `压缩包名.zip`);
});

上面的type:"blod"可以根据需求自定义类型,如base64,arraybuffer等generateAsync(options[, onUpdate])

通过.remove(name)删除文件或文件夹:


zip.remove("photos"); //通过删除文件夹,也删除其内容。

浏览器端解压Zip文件

import JSZip from 'jszip'

let new_zip = new JSZip();

new_zip.loadAsync(content).then(function(zip) {
    new_zip.file("hello.txt").async("string"); 
});

案例:导出一个zip文件,包含图片文件和.json文件

/**
  *  @param dataList ['base64数据','base64数据']
  */
 function exportJSZipFileSaverEvent (dataList: any) {
    var zip = new JSZip();
    var img = zip.folder("images");
    let myNotesName = 'zip名称';
    for (let i = 0; i < dataList.length; i++) {
      //过滤base64格式
      let image = dataList[i].replace(/^data:image\/(png|jpg|jpeg);base64,/, ""); 
      let imageNames = `${myNotesName}${getTime()}(${i + 1}).png`;
      img?.file(imageNames, image, {base64: true});
      
      // 导出json
      let jsonNames = `${myNotesName}${getTime()}(${i + 1}).json`;
      zip.file(jsonNames, 'json文本数据');
    }

    // 下载
    zip.generateAsync({type: "blob"}).then(function (content) {
      FileSaver.saveAs(content, `${myNotesName}${getTime()}.zip`);
    });
  }

  function getTime () {
    let data = new Date();
    return data.getFullYear() + "-" + (data.getMonth() + 1) + "-" + data.getDate();
  }

JSZip API地址:
JSZip
JSZip: JavaScript zip class

 交流


1、QQ群:可添加qq群共同进阶学习: 进军全栈工程师疑难解  群:  856402057

2、公众号:公众号「进军全栈攻城狮」 ,对前端技术保持学习爱好者。我会经常分享自己所学所看的干货,在进阶的路上,共勉!

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值