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

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

JSZip简介

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

npm install jszipnp
m 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`);
});

通过.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地址:

    https://stuk.github.io/jszip/

    https://heltschl.org/_js/jszip/

    相关文章
    |
    3月前
    |
    API C# 数据安全/隐私保护
    C# 实现网页内容保存为图片并生成压缩包
    C# 实现网页内容保存为图片并生成压缩包
    |
    Java
    不解压修改压缩文件内容
    在java中,可以不解压压缩包就修改压缩包中文件的内容。
    376 0
    不解压修改压缩文件内容
    |
    Java 程序员
    批量压缩16万个文件夹为压缩包(.zip格式)
    🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
    234 0
    批量压缩16万个文件夹为压缩包(.zip格式)
    最新!压缩为rar格式方法,目前只能用:WinRAR压缩工具-rar压缩格式的版权所有者。
    最新!压缩为rar格式方法,目前只能用:WinRAR压缩工具-rar压缩格式的版权所有者。
    234 0
    最新!压缩为rar格式方法,目前只能用:WinRAR压缩工具-rar压缩格式的版权所有者。
    |
    程序员 C#
    C# 压缩文件
    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。    十年河东十年河西,莫欺少年穷。     学无止境,精益求精    上一节讲述了C# WebApi传参之Post请求-AJAX    本节探讨C#压缩文件的方法,直接上代码    如下 pub...
    1217 0
    |
    C# 数据安全/隐私保护
    C# 压缩PDF图片
    文档中包含图片的话,会使得整个文档比较大,占用存储空间且不利于快速、高效的传输文件。针对一些包含大量高质图片的PDF文档,若是对图片进行压缩,可以有效减少文档的占用空间。并且,在文档传输过程中也可以减少传送时间,提高效率。
    1248 0