返回

如何在 JavaScript 中压缩和解压缩文件

前端

浏览器端

// 安装 JSZIP 库
import JSZip from "jszip";

// 创建一个新的 JSZIP 实例
const zip = new JSZip();

// 添加文件到压缩包
zip.file("hello.txt", "Hello, world!");

// 保存压缩包
zip.generateAsync({type: "blob"}).then(function(content) {
  // 保存文件
  saveAs(content, "my_archive.zip");
});

Node.js

// 安装 JSZIP 库
const JSZip = require("jszip");

// 创建一个新的 JSZIP 实例
const zip = new JSZip();

// 添加文件到压缩包
zip.file("hello.txt", "Hello, world!");

// 保存压缩包
zip.generateNodeStream().pipe(fs.createWriteStream("my_archive.zip"));

解压缩文件

// 加载压缩包
zip.loadAsync(content).then(function(zip) {
  // 提取文件
  zip.file("hello.txt").async("string").then(function(content) {
    // 使用文件内容
    console.log(content);
  });
});

解码文件

// 根据文件类型解码文件
switch (file.name.split(".").pop()) {
  case "txt":
    // 文本文件
    file.async("string").then(function(content) {
      // 使用文件内容
      console.log(content);
    });
    break;
  case "png":
    // 图像文件
    file.async("uint8array").then(function(content) {
      // 使用文件内容
      const img = document.createElement("img");
      img.src = URL.createObjectURL(new Blob([content]));
      document.body.appendChild(img);
    });
    break;
  case "json":
    // JSON 文件
    file.async("json").then(function(content) {
      // 使用文件内容
      console.log(content);
    });
    break;
}

结论

JSZIP 是一个强大的 JavaScript 库,用于压缩和解压缩文件。它支持各种文件格式,并且可以在浏览器端和 Node.js 中使用。希望本教程对您有所帮助。